diff options
| -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) | |||
| 366 | mutex_lock(&devices_lock); | 366 | mutex_lock(&devices_lock); |
| 367 | devices[minor] = NULL; | 367 | devices[minor] = NULL; |
| 368 | mutex_unlock(&devices_lock); | 368 | mutex_unlock(&devices_lock); |
| 369 | 369 | ||
| 370 | if (device->open) { | 370 | if (device->open) { |
| 371 | hid_hw_close(device->hid); | 371 | hid_hw_close(device->hid); |
| 372 | wake_up_interruptible(&device->wait); | 372 | wake_up_interruptible(&device->wait); |
| @@ -426,13 +426,23 @@ static int __init roccat_init(void) | |||
| 426 | 426 | ||
| 427 | if (retval < 0) { | 427 | if (retval < 0) { |
| 428 | pr_warn("can't get major number\n"); | 428 | pr_warn("can't get major number\n"); |
| 429 | return retval; | 429 | goto error; |
| 430 | } | 430 | } |
| 431 | 431 | ||
| 432 | cdev_init(&roccat_cdev, &roccat_ops); | 432 | cdev_init(&roccat_cdev, &roccat_ops); |
| 433 | cdev_add(&roccat_cdev, dev_id, ROCCAT_MAX_DEVICES); | 433 | retval = cdev_add(&roccat_cdev, dev_id, ROCCAT_MAX_DEVICES); |
| 434 | 434 | ||
| 435 | if (retval < 0) { | ||
| 436 | pr_warn("cannot add cdev\n"); | ||
| 437 | goto cleanup_alloc_chrdev_region; | ||
| 438 | } | ||
| 435 | return 0; | 439 | return 0; |
| 440 | |||
| 441 | |||
| 442 | cleanup_alloc_chrdev_region: | ||
| 443 | unregister_chrdev_region(dev_id, ROCCAT_MAX_DEVICES); | ||
| 444 | error: | ||
| 445 | return retval; | ||
| 436 | } | 446 | } |
| 437 | 447 | ||
| 438 | static void __exit roccat_exit(void) | 448 | static void __exit roccat_exit(void) |
