summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/isdn/capi/capifs.c10
-rw-r--r--drivers/usb/core/inode.c1
-rw-r--r--drivers/usb/gadget/inode.c12
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;
}