X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fisdn%2Fcapi%2Fcapi.c;h=8c86df4f2264031cfc70aa562e8e451e03d96b3a;hb=5e3b93f248c98873cc843e83092bb8da92ac85a2;hp=3429d57e297eef21284108506a0584d91e5ea339;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c index 3429d57e2..8c86df4f2 100644 --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -162,7 +162,7 @@ static int capincci_add_ack(struct capiminor *mp, u16 datahandle) printk(KERN_ERR "capi: alloc datahandle failed\n"); return -1; } - n->next = NULL; + n->next = 0; n->datahandle = datahandle; for (pp = &mp->ackqueue; *pp; pp = &(*pp)->next) ; *pp = n; @@ -211,7 +211,7 @@ static struct capiminor *capiminor_alloc(struct capi20_appl *ap, u32 ncci) mp = kmalloc(sizeof(*mp), GFP_ATOMIC); if (!mp) { printk(KERN_ERR "capi: can't alloc capiminor\n"); - return NULL; + return 0; } memset(mp, 0, sizeof(struct capiminor)); @@ -245,7 +245,7 @@ static struct capiminor *capiminor_alloc(struct capi20_appl *ap, u32 ncci) if (!(minor < capi_ttyminors)) { printk(KERN_NOTICE "capi: out of minors\n"); kfree(mp); - return NULL; + return 0; } return mp; @@ -260,7 +260,7 @@ static void capiminor_free(struct capiminor *mp) write_unlock_irqrestore(&capiminor_list_lock, flags); if (mp->ttyskb) kfree_skb(mp->ttyskb); - mp->ttyskb = NULL; + mp->ttyskb = 0; skb_queue_purge(&mp->inqueue); skb_queue_purge(&mp->outqueue); capiminor_del_all_ack(mp); @@ -292,17 +292,17 @@ static struct capincci *capincci_alloc(struct capidev *cdev, u32 ncci) { struct capincci *np, **pp; #ifdef CONFIG_ISDN_CAPI_MIDDLEWARE - struct capiminor *mp = NULL; + struct capiminor *mp = 0; #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */ np = kmalloc(sizeof(*np), GFP_ATOMIC); if (!np) - return NULL; + return 0; memset(np, 0, sizeof(struct capincci)); np->ncci = ncci; np->cdev = cdev; #ifdef CONFIG_ISDN_CAPI_MIDDLEWARE - mp = NULL; + mp = 0; if (cdev->userflags & CAPIFLAG_HIGHJACKING) mp = np->minorp = capiminor_alloc(&cdev->ap, ncci); if (mp) { @@ -339,7 +339,7 @@ static void capincci_free(struct capidev *cdev, u32 ncci) capifs_free_ncci(mp->minor); #endif if (mp->tty) { - mp->nccip = NULL; + mp->nccip = 0; #ifdef _DEBUG_REFCOUNT printk(KERN_DEBUG "reset mp->nccip\n"); #endif @@ -377,7 +377,7 @@ static struct capidev *capidev_alloc(void) cdev = kmalloc(sizeof(*cdev), GFP_KERNEL); if (!cdev) - return NULL; + return 0; memset(cdev, 0, sizeof(struct capidev)); init_MUTEX(&cdev->ncci_list_sem); @@ -473,7 +473,7 @@ static int handle_recv_skb(struct capiminor *mp, struct sk_buff *skb) printk(KERN_DEBUG "capi: DATA_B3_RESP %u len=%d => ldisc\n", datahandle, skb->len); #endif - mp->tty->ldisc.receive_buf(mp->tty, skb->data, NULL, skb->len); + mp->tty->ldisc.receive_buf(mp->tty, skb->data, 0, skb->len); kfree_skb(skb); return 0; @@ -650,12 +650,15 @@ static void capi_recv_message(struct capi20_appl *ap, struct sk_buff *skb) /* -------- file_operations for capidev ----------------------------- */ static ssize_t -capi_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) +capi_read(struct file *file, char *buf, size_t count, loff_t *ppos) { struct capidev *cdev = (struct capidev *)file->private_data; struct sk_buff *skb; size_t copied; + if (ppos != &file->f_pos) + return -ESPIPE; + if (!cdev->ap.applid) return -ENODEV; @@ -690,12 +693,15 @@ capi_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) } static ssize_t -capi_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) +capi_write(struct file *file, const char *buf, size_t count, loff_t *ppos) { struct capidev *cdev = (struct capidev *)file->private_data; struct sk_buff *skb; u16 mlen; + if (ppos != &file->f_pos) + return -ESPIPE; + if (!cdev->ap.applid) return -ENODEV; @@ -760,7 +766,6 @@ capi_ioctl(struct inode *inode, struct file *file, struct capi20_appl *ap = &cdev->ap; capi_ioctl_struct data; int retval = -EINVAL; - void __user *argp = (void __user *)arg; switch (cmd) { case CAPI_REGISTER: @@ -768,7 +773,7 @@ capi_ioctl(struct inode *inode, struct file *file, if (ap->applid) return -EEXIST; - if (copy_from_user(&cdev->ap.rparam, argp, + if (copy_from_user(&cdev->ap.rparam, (void *) arg, sizeof(struct capi_register_params))) return -EFAULT; @@ -784,13 +789,14 @@ capi_ioctl(struct inode *inode, struct file *file, case CAPI_GET_VERSION: { - if (copy_from_user(&data.contr, argp, + if (copy_from_user((void *) &data.contr, + (void *) arg, sizeof(data.contr))) return -EFAULT; cdev->errcode = capi20_get_version(data.contr, &data.version); if (cdev->errcode) return -EIO; - if (copy_to_user(argp, &data.version, + if (copy_to_user((void *)arg, (void *)&data.version, sizeof(data.version))) return -EFAULT; } @@ -798,20 +804,20 @@ capi_ioctl(struct inode *inode, struct file *file, case CAPI_GET_SERIAL: { - if (copy_from_user(&data.contr, argp, + if (copy_from_user((void *)&data.contr, (void *)arg, sizeof(data.contr))) return -EFAULT; cdev->errcode = capi20_get_serial (data.contr, data.serial); if (cdev->errcode) return -EIO; - if (copy_to_user(argp, data.serial, + if (copy_to_user((void *)arg, (void *)data.serial, sizeof(data.serial))) return -EFAULT; } return 0; case CAPI_GET_PROFILE: { - if (copy_from_user(&data.contr, argp, + if (copy_from_user((void *)&data.contr, (void *)arg, sizeof(data.contr))) return -EFAULT; @@ -820,8 +826,8 @@ capi_ioctl(struct inode *inode, struct file *file, if (cdev->errcode) return -EIO; - retval = copy_to_user(argp, - &data.profile.ncontroller, + retval = copy_to_user((void *) arg, + (void *) &data.profile.ncontroller, sizeof(data.profile.ncontroller)); } else { @@ -829,7 +835,8 @@ capi_ioctl(struct inode *inode, struct file *file, if (cdev->errcode) return -EIO; - retval = copy_to_user(argp, &data.profile, + retval = copy_to_user((void *) arg, + (void *) &data.profile, sizeof(data.profile)); } if (retval) @@ -839,14 +846,14 @@ capi_ioctl(struct inode *inode, struct file *file, case CAPI_GET_MANUFACTURER: { - if (copy_from_user(&data.contr, argp, + if (copy_from_user((void *)&data.contr, (void *)arg, sizeof(data.contr))) return -EFAULT; cdev->errcode = capi20_get_manufacturer(data.contr, data.manufacturer); if (cdev->errcode) return -EIO; - if (copy_to_user(argp, data.manufacturer, + if (copy_to_user((void *)arg, (void *)data.manufacturer, sizeof(data.manufacturer))) return -EFAULT; @@ -856,7 +863,7 @@ capi_ioctl(struct inode *inode, struct file *file, data.errcode = cdev->errcode; cdev->errcode = CAPI_NOERROR; if (arg) { - if (copy_to_user(argp, &data.errcode, + if (copy_to_user((void *)arg, (void *)&data.errcode, sizeof(data.errcode))) return -EFAULT; } @@ -872,7 +879,8 @@ capi_ioctl(struct inode *inode, struct file *file, struct capi_manufacturer_cmd mcmd; if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (copy_from_user(&mcmd, argp, sizeof(mcmd))) + if (copy_from_user((void *)&mcmd, (void *)arg, + sizeof(mcmd))) return -EFAULT; return capi20_manufacturer(mcmd.cmd, mcmd.data); } @@ -882,7 +890,7 @@ capi_ioctl(struct inode *inode, struct file *file, case CAPI_CLR_FLAGS: { unsigned userflags; - if (copy_from_user(&userflags, argp, + if (copy_from_user((void *)&userflags, (void *)arg, sizeof(userflags))) return -EFAULT; if (cmd == CAPI_SET_FLAGS) @@ -893,7 +901,7 @@ capi_ioctl(struct inode *inode, struct file *file, return 0; case CAPI_GET_FLAGS: - if (copy_to_user(argp, &cdev->userflags, + if (copy_to_user((void *)arg, (void *)&cdev->userflags, sizeof(cdev->userflags))) return -EFAULT; return 0; @@ -906,7 +914,8 @@ capi_ioctl(struct inode *inode, struct file *file, #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */ unsigned ncci; int count = 0; - if (copy_from_user(&ncci, argp, sizeof(ncci))) + if (copy_from_user((void *)&ncci, (void *)arg, + sizeof(ncci))) return -EFAULT; down(&cdev->ncci_list_sem); @@ -931,7 +940,7 @@ capi_ioctl(struct inode *inode, struct file *file, struct capiminor *mp; unsigned ncci; int unit = 0; - if (copy_from_user(&ncci, argp, + if (copy_from_user((void *)&ncci, (void *)arg, sizeof(ncci))) return -EFAULT; down(&cdev->ncci_list_sem); @@ -959,7 +968,7 @@ capi_open(struct inode *inode, struct file *file) if ((file->private_data = capidev_alloc()) == 0) return -ENOMEM; - return nonseekable_open(inode, file); + return 0; } static int @@ -1019,8 +1028,8 @@ static void capinc_tty_close(struct tty_struct * tty, struct file * file) #ifdef _DEBUG_REFCOUNT printk(KERN_DEBUG "capinc_tty_close lastclose\n"); #endif - tty->driver_data = NULL; - mp->tty = NULL; + tty->driver_data = (void *)0; + mp->tty = 0; } #ifdef _DEBUG_REFCOUNT printk(KERN_DEBUG "capinc_tty_close ocount=%d\n", atomic_read(&mp->ttyopencount)); @@ -1055,7 +1064,7 @@ static int capinc_tty_write(struct tty_struct * tty, int from_user, skb = mp->ttyskb; if (skb) { - mp->ttyskb = NULL; + mp->ttyskb = 0; skb_queue_tail(&mp->outqueue, skb); mp->outbytes += skb->len; } @@ -1068,8 +1077,7 @@ static int capinc_tty_write(struct tty_struct * tty, int from_user, skb_reserve(skb, CAPI_DATA_B3_REQ_LEN); if (from_user) { - retval = copy_from_user(skb_put(skb, count), buf, count); - if (retval) { + if ((retval = copy_from_user(skb_put(skb, count), buf, count))) { kfree_skb(skb); #ifdef _DEBUG_TTYFUNCS printk(KERN_DEBUG "capinc_tty_write: copy_from_user=%d\n", retval); @@ -1109,7 +1117,7 @@ static void capinc_tty_put_char(struct tty_struct *tty, unsigned char ch) *(skb_put(skb, 1)) = ch; return; } - mp->ttyskb = NULL; + mp->ttyskb = 0; skb_queue_tail(&mp->outqueue, skb); mp->outbytes += skb->len; (void)handle_minor_send(mp); @@ -1142,7 +1150,7 @@ static void capinc_tty_flush_chars(struct tty_struct *tty) skb = mp->ttyskb; if (skb) { - mp->ttyskb = NULL; + mp->ttyskb = 0; skb_queue_tail(&mp->outqueue, skb); mp->outbytes += skb->len; (void)handle_minor_send(mp); @@ -1460,7 +1468,7 @@ static void __init proc_init(void) for (i=0; i < nelem; i++) { struct procfsentries *p = procfsentries + i; - p->procent = create_proc_entry(p->name, p->mode, NULL); + p->procent = create_proc_entry(p->name, p->mode, 0); if (p->procent) p->procent->read_proc = p->read_proc; } } @@ -1473,8 +1481,8 @@ static void __exit proc_exit(void) for (i=nelem-1; i >= 0; i--) { struct procfsentries *p = procfsentries + i; if (p->procent) { - remove_proc_entry(p->name, NULL); - p->procent = NULL; + remove_proc_entry(p->name, 0); + p->procent = 0; } } }