printk(KERN_ERR "capi: alloc datahandle failed\n");
return -1;
}
- n->next = 0;
+ n->next = NULL;
n->datahandle = datahandle;
for (pp = &mp->ackqueue; *pp; pp = &(*pp)->next) ;
*pp = n;
mp = kmalloc(sizeof(*mp), GFP_ATOMIC);
if (!mp) {
printk(KERN_ERR "capi: can't alloc capiminor\n");
- return 0;
+ return NULL;
}
memset(mp, 0, sizeof(struct capiminor));
if (!(minor < capi_ttyminors)) {
printk(KERN_NOTICE "capi: out of minors\n");
kfree(mp);
- return 0;
+ return NULL;
}
return mp;
write_unlock_irqrestore(&capiminor_list_lock, flags);
if (mp->ttyskb) kfree_skb(mp->ttyskb);
- mp->ttyskb = 0;
+ mp->ttyskb = NULL;
skb_queue_purge(&mp->inqueue);
skb_queue_purge(&mp->outqueue);
capiminor_del_all_ack(mp);
{
struct capincci *np, **pp;
#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
- struct capiminor *mp = 0;
+ struct capiminor *mp = NULL;
#endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */
np = kmalloc(sizeof(*np), GFP_ATOMIC);
if (!np)
- return 0;
+ return NULL;
memset(np, 0, sizeof(struct capincci));
np->ncci = ncci;
np->cdev = cdev;
#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
- mp = 0;
+ mp = NULL;
if (cdev->userflags & CAPIFLAG_HIGHJACKING)
mp = np->minorp = capiminor_alloc(&cdev->ap, ncci);
if (mp) {
capifs_free_ncci(mp->minor);
#endif
if (mp->tty) {
- mp->nccip = 0;
+ mp->nccip = NULL;
#ifdef _DEBUG_REFCOUNT
printk(KERN_DEBUG "reset mp->nccip\n");
#endif
cdev = kmalloc(sizeof(*cdev), GFP_KERNEL);
if (!cdev)
- return 0;
+ return NULL;
memset(cdev, 0, sizeof(struct capidev));
init_MUTEX(&cdev->ncci_list_sem);
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, 0, skb->len);
+ mp->tty->ldisc.receive_buf(mp->tty, skb->data, NULL, skb->len);
kfree_skb(skb);
return 0;
/* -------- file_operations for capidev ----------------------------- */
static ssize_t
-capi_read(struct file *file, char *buf, size_t count, loff_t *ppos)
+capi_read(struct file *file, char __user *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;
}
static ssize_t
-capi_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
+capi_write(struct file *file, const char __user *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;
struct capi20_appl *ap = &cdev->ap;
capi_ioctl_struct data;
int retval = -EINVAL;
+ void __user *argp = (void __user *)arg;
switch (cmd) {
case CAPI_REGISTER:
if (ap->applid)
return -EEXIST;
- if (copy_from_user(&cdev->ap.rparam, (void *) arg,
+ if (copy_from_user(&cdev->ap.rparam, argp,
sizeof(struct capi_register_params)))
return -EFAULT;
case CAPI_GET_VERSION:
{
- if (copy_from_user((void *) &data.contr,
- (void *) arg,
+ if (copy_from_user(&data.contr, argp,
sizeof(data.contr)))
return -EFAULT;
cdev->errcode = capi20_get_version(data.contr, &data.version);
if (cdev->errcode)
return -EIO;
- if (copy_to_user((void *)arg, (void *)&data.version,
+ if (copy_to_user(argp, &data.version,
sizeof(data.version)))
return -EFAULT;
}
case CAPI_GET_SERIAL:
{
- if (copy_from_user((void *)&data.contr, (void *)arg,
+ if (copy_from_user(&data.contr, argp,
sizeof(data.contr)))
return -EFAULT;
cdev->errcode = capi20_get_serial (data.contr, data.serial);
if (cdev->errcode)
return -EIO;
- if (copy_to_user((void *)arg, (void *)data.serial,
+ if (copy_to_user(argp, data.serial,
sizeof(data.serial)))
return -EFAULT;
}
return 0;
case CAPI_GET_PROFILE:
{
- if (copy_from_user((void *)&data.contr, (void *)arg,
+ if (copy_from_user(&data.contr, argp,
sizeof(data.contr)))
return -EFAULT;
if (cdev->errcode)
return -EIO;
- retval = copy_to_user((void *) arg,
- (void *) &data.profile.ncontroller,
+ retval = copy_to_user(argp,
+ &data.profile.ncontroller,
sizeof(data.profile.ncontroller));
} else {
if (cdev->errcode)
return -EIO;
- retval = copy_to_user((void *) arg,
- (void *) &data.profile,
+ retval = copy_to_user(argp, &data.profile,
sizeof(data.profile));
}
if (retval)
case CAPI_GET_MANUFACTURER:
{
- if (copy_from_user((void *)&data.contr, (void *)arg,
+ if (copy_from_user(&data.contr, argp,
sizeof(data.contr)))
return -EFAULT;
cdev->errcode = capi20_get_manufacturer(data.contr, data.manufacturer);
if (cdev->errcode)
return -EIO;
- if (copy_to_user((void *)arg, (void *)data.manufacturer,
+ if (copy_to_user(argp, data.manufacturer,
sizeof(data.manufacturer)))
return -EFAULT;
data.errcode = cdev->errcode;
cdev->errcode = CAPI_NOERROR;
if (arg) {
- if (copy_to_user((void *)arg, (void *)&data.errcode,
+ if (copy_to_user(argp, &data.errcode,
sizeof(data.errcode)))
return -EFAULT;
}
struct capi_manufacturer_cmd mcmd;
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
- if (copy_from_user((void *)&mcmd, (void *)arg,
- sizeof(mcmd)))
+ if (copy_from_user(&mcmd, argp, sizeof(mcmd)))
return -EFAULT;
return capi20_manufacturer(mcmd.cmd, mcmd.data);
}
case CAPI_CLR_FLAGS:
{
unsigned userflags;
- if (copy_from_user((void *)&userflags, (void *)arg,
+ if (copy_from_user(&userflags, argp,
sizeof(userflags)))
return -EFAULT;
if (cmd == CAPI_SET_FLAGS)
return 0;
case CAPI_GET_FLAGS:
- if (copy_to_user((void *)arg, (void *)&cdev->userflags,
+ if (copy_to_user(argp, &cdev->userflags,
sizeof(cdev->userflags)))
return -EFAULT;
return 0;
#endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */
unsigned ncci;
int count = 0;
- if (copy_from_user((void *)&ncci, (void *)arg,
- sizeof(ncci)))
+ if (copy_from_user(&ncci, argp, sizeof(ncci)))
return -EFAULT;
down(&cdev->ncci_list_sem);
struct capiminor *mp;
unsigned ncci;
int unit = 0;
- if (copy_from_user((void *)&ncci, (void *)arg,
+ if (copy_from_user(&ncci, argp,
sizeof(ncci)))
return -EFAULT;
down(&cdev->ncci_list_sem);
if ((file->private_data = capidev_alloc()) == 0)
return -ENOMEM;
- return 0;
+ return nonseekable_open(inode, file);
}
static int
#ifdef _DEBUG_REFCOUNT
printk(KERN_DEBUG "capinc_tty_close lastclose\n");
#endif
- tty->driver_data = (void *)0;
- mp->tty = 0;
+ tty->driver_data = NULL;
+ mp->tty = NULL;
}
#ifdef _DEBUG_REFCOUNT
printk(KERN_DEBUG "capinc_tty_close ocount=%d\n", atomic_read(&mp->ttyopencount));
skb = mp->ttyskb;
if (skb) {
- mp->ttyskb = 0;
+ mp->ttyskb = NULL;
skb_queue_tail(&mp->outqueue, skb);
mp->outbytes += skb->len;
}
skb_reserve(skb, CAPI_DATA_B3_REQ_LEN);
if (from_user) {
- if ((retval = copy_from_user(skb_put(skb, count), buf, count))) {
+ retval = copy_from_user(skb_put(skb, count), buf, count);
+ if (retval) {
kfree_skb(skb);
#ifdef _DEBUG_TTYFUNCS
printk(KERN_DEBUG "capinc_tty_write: copy_from_user=%d\n", retval);
*(skb_put(skb, 1)) = ch;
return;
}
- mp->ttyskb = 0;
+ mp->ttyskb = NULL;
skb_queue_tail(&mp->outqueue, skb);
mp->outbytes += skb->len;
(void)handle_minor_send(mp);
skb = mp->ttyskb;
if (skb) {
- mp->ttyskb = 0;
+ mp->ttyskb = NULL;
skb_queue_tail(&mp->outqueue, skb);
mp->outbytes += skb->len;
(void)handle_minor_send(mp);
for (i=0; i < nelem; i++) {
struct procfsentries *p = procfsentries + i;
- p->procent = create_proc_entry(p->name, p->mode, 0);
+ p->procent = create_proc_entry(p->name, p->mode, NULL);
if (p->procent) p->procent->read_proc = p->read_proc;
}
}
for (i=nelem-1; i >= 0; i--) {
struct procfsentries *p = procfsentries + i;
if (p->procent) {
- remove_proc_entry(p->name, 0);
- p->procent = 0;
+ remove_proc_entry(p->name, NULL);
+ p->procent = NULL;
}
}
}