From: Daniel J Blueman on 8 Aug 2010 10:40 Hi Roger, Here is a fix for 2.6.36-rc1: Ensure the BKL is dropped along all paths. Signed-off-by: Daniel J Blueman <daniel.blueman(a)gmail.com> diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index c24d2fa..53263e7 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c @@ -271,16 +271,18 @@ static int hiddev_open(struct inode *inode, struct file *file) lock_kernel(); i = iminor(inode) - HIDDEV_MINOR_BASE; - if (i >= HIDDEV_MINORS || i < 0 || !hiddev_table[i]) + if (i >= HIDDEV_MINORS || i < 0 || !hiddev_table[i]) { + unlock_kernel(); return -ENODEV; + } - if (!(list = kzalloc(sizeof(struct hiddev_list), GFP_KERNEL))) + if (!(list = kzalloc(sizeof(struct hiddev_list), GFP_KERNEL))) { + unlock_kernel(); return -ENOMEM; - mutex_init(&list->thread_lock); + } + mutex_init(&list->thread_lock); list->hiddev = hiddev_table[i]; - - file->private_data = list; /* -- Daniel J Blueman -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Pages: 1 Prev: [PATCH] mmc_spi: Fix unterminated of_match_table Next: add missing unlock_kernel calls... |