diff options
author | Michael Rissi <michael.rissi@gmail.com> | 2013-06-14 19:16:37 +0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2013-06-18 13:00:36 +0400 |
commit | a0be10c2e0c822c0fdd6b207696012060147f84b (patch) | |
tree | 9d374c7706ef5b94cc65894e7cea9b280d3592c7 /drivers/hid/hid-roccat.c | |
parent | a4a23f6d68ad2c86ee8df6a6f89c9d315c0a761c (diff) | |
download | linux-a0be10c2e0c822c0fdd6b207696012060147f84b.tar.xz |
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 <michael.rissi@dectris.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-roccat.c')
-rw-r--r-- | drivers/hid/hid-roccat.c | 16 |
1 files changed, 13 insertions, 3 deletions
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) |