From: Michael Rissi Date: Fri, 14 Jun 2013 15:16:37 +0000 (+0200) Subject: HID: roccat: check cdev_add return value X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=a0be10c2e0c822c0fdd6b207696012060147f84b;p=openwrt%2Fstaging%2Fblogic.git HID: roccat: check cdev_add return value Return value of cdev_add in hid_roccat.c init was not checked. Signed-off-by: Michael Rissi Signed-off-by: Jiri Kosina --- diff --git a/drivers/hid/hid-roccat.c b/drivers/hid/hid-roccat.c index b59b3df9ca95..65c4ccfcbd29 100644 --- a/drivers/hid/hid-roccat.c +++ b/drivers/hid/hid-roccat.c @@ -366,7 +366,7 @@ void roccat_disconnect(int minor) mutex_lock(&devices_lock); devices[minor] = NULL; mutex_unlock(&devices_lock); - + if (device->open) { hid_hw_close(device->hid); wake_up_interruptible(&device->wait); @@ -426,13 +426,23 @@ static int __init roccat_init(void) if (retval < 0) { pr_warn("can't get major number\n"); - return retval; + goto error; } cdev_init(&roccat_cdev, &roccat_ops); - cdev_add(&roccat_cdev, dev_id, ROCCAT_MAX_DEVICES); + retval = cdev_add(&roccat_cdev, dev_id, ROCCAT_MAX_DEVICES); + if (retval < 0) { + pr_warn("cannot add cdev\n"); + goto cleanup_alloc_chrdev_region; + } return 0; + + + cleanup_alloc_chrdev_region: + unregister_chrdev_region(dev_id, ROCCAT_MAX_DEVICES); + error: + return retval; } static void __exit roccat_exit(void)