mISDN: grabbing/dropping reference to THIS_MODULE in open/release is racy
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 15 Apr 2013 21:27:11 +0000 (17:27 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 29 Apr 2013 19:41:49 +0000 (15:41 -0400)
... when you have no ->owner set.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/isdn/mISDN/timerdev.c

index da2aa37..9438d7e 100644 (file)
@@ -64,7 +64,6 @@ mISDN_open(struct inode *ino, struct file *filep)
        dev->work = 0;
        init_waitqueue_head(&dev->wait);
        filep->private_data = dev;
-       __module_get(THIS_MODULE);
        return nonseekable_open(ino, filep);
 }
 
@@ -94,7 +93,6 @@ mISDN_close(struct inode *ino, struct file *filep)
                kfree(timer);
        }
        kfree(dev);
-       module_put(THIS_MODULE);
        return 0;
 }
 
@@ -269,6 +267,7 @@ mISDN_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
 }
 
 static const struct file_operations mISDN_fops = {
+       .owner          = THIS_MODULE,
        .read           = mISDN_read,
        .poll           = mISDN_poll,
        .unlocked_ioctl = mISDN_ioctl,