diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/isdn/capi/capifs.c | 10 | ||||
-rw-r--r-- | drivers/usb/core/inode.c | 1 | ||||
-rw-r--r-- | drivers/usb/gadget/inode.c | 12 |
3 files changed, 18 insertions, 5 deletions
diff --git a/drivers/isdn/capi/capifs.c b/drivers/isdn/capi/capifs.c index 2b83850997c3..c559b5265410 100644 --- a/drivers/isdn/capi/capifs.c +++ b/drivers/isdn/capi/capifs.c @@ -17,6 +17,7 @@ #include <linux/init.h> #include <linux/ctype.h> #include <linux/sched.h> /* current */ +#include <linux/smp_lock.h> /* For lock_kernel() */ #include "capifs.h" @@ -99,6 +100,8 @@ capifs_fill_super(struct super_block *s, void *data, int silent) { struct inode * inode; + lock_kernel(); + s->s_blocksize = 1024; s->s_blocksize_bits = 10; s->s_magic = CAPIFS_SUPER_MAGIC; @@ -116,12 +119,15 @@ capifs_fill_super(struct super_block *s, void *data, int silent) inode->i_nlink = 2; s->s_root = d_alloc_root(inode); - if (s->s_root) + if (s->s_root) { + unlock_kernel(); return 0; - + } + printk("capifs: get root dentry failed\n"); iput(inode); fail: + unlock_kernel(); return -ENOMEM; } diff --git a/drivers/usb/core/inode.c b/drivers/usb/core/inode.c index 095fa5366690..9e2ec9f685c0 100644 --- a/drivers/usb/core/inode.c +++ b/drivers/usb/core/inode.c @@ -39,7 +39,6 @@ #include <linux/parser.h> #include <linux/notifier.h> #include <linux/seq_file.h> -#include <linux/smp_lock.h> #include <linux/usb/hcd.h> #include <asm/byteorder.h> #include "usb.h" diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c index e2e8eda83f0d..cea33cc73454 100644 --- a/drivers/usb/gadget/inode.c +++ b/drivers/usb/gadget/inode.c @@ -2041,13 +2041,19 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent) struct dentry *d; struct dev_data *dev; - if (the_device) + lock_kernel(); + + if (the_device) { + unlock_kernel(); return -ESRCH; + } /* fake probe to determine $CHIP */ (void) usb_gadget_probe_driver(&probe_driver, gadgetfs_probe); - if (!CHIP) + if (!CHIP) { + unlock_kernel(); return -ENODEV; + } /* superblock */ sb->s_blocksize = PAGE_CACHE_SIZE; @@ -2084,6 +2090,7 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent) * from binding to a controller. */ the_device = dev; + unlock_kernel(); return 0; enomem3: @@ -2093,6 +2100,7 @@ enomem2: enomem1: iput (inode); enomem0: + unlock_kernel(); return -ENOMEM; } |