summaryrefslogtreecommitdiff
path: root/drivers/hid
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2010-02-22 16:21:38 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2010-02-22 16:21:38 +1100
commit759bdb115a73efb800f732299d39314385a20b75 (patch)
treedd01631eaa4cd728a29a6dd3887c67d85c7f4fce /drivers/hid
parent977d1320a7895a5524d991b3fd669a6fd1d87d74 (diff)
parent8c741e04e54312b3cf1404a44e3c7460257d58cc (diff)
Merge branch 'quilt/usb'
Conflicts: drivers/usb/early/ehci-dbgp.c
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/usbhid/hiddev.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
index 867e08433e4b..433602aed468 100644
--- a/drivers/hid/usbhid/hiddev.c
+++ b/drivers/hid/usbhid/hiddev.c
@@ -265,9 +265,10 @@ static int hiddev_release(struct inode * inode, struct file * file)
static int hiddev_open(struct inode *inode, struct file *file)
{
struct hiddev_list *list;
- int res;
+ int res, i;
- int i = iminor(inode) - HIDDEV_MINOR_BASE;
+ lock_kernel();
+ i = iminor(inode) - HIDDEV_MINOR_BASE;
if (i >= HIDDEV_MINORS || i < 0 || !hiddev_table[i])
return -ENODEV;
@@ -313,10 +314,12 @@ static int hiddev_open(struct inode *inode, struct file *file)
usbhid_open(hid);
}
+ unlock_kernel();
return 0;
bail:
file->private_data = NULL;
kfree(list);
+ unlock_kernel();
return res;
}