diff options
-rw-r--r-- | drivers/hid/hidraw.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index c79578b5a78..a8c2b7b6220 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c | |||
@@ -510,13 +510,12 @@ void hidraw_disconnect(struct hid_device *hid) | |||
510 | { | 510 | { |
511 | struct hidraw *hidraw = hid->hidraw; | 511 | struct hidraw *hidraw = hid->hidraw; |
512 | 512 | ||
513 | mutex_lock(&minors_lock); | ||
513 | hidraw->exist = 0; | 514 | hidraw->exist = 0; |
514 | 515 | ||
515 | device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor)); | 516 | device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor)); |
516 | 517 | ||
517 | mutex_lock(&minors_lock); | ||
518 | hidraw_table[hidraw->minor] = NULL; | 518 | hidraw_table[hidraw->minor] = NULL; |
519 | mutex_unlock(&minors_lock); | ||
520 | 519 | ||
521 | if (hidraw->open) { | 520 | if (hidraw->open) { |
522 | hid_hw_close(hid); | 521 | hid_hw_close(hid); |
@@ -524,6 +523,7 @@ void hidraw_disconnect(struct hid_device *hid) | |||
524 | } else { | 523 | } else { |
525 | kfree(hidraw); | 524 | kfree(hidraw); |
526 | } | 525 | } |
526 | mutex_unlock(&minors_lock); | ||
527 | } | 527 | } |
528 | EXPORT_SYMBOL_GPL(hidraw_disconnect); | 528 | EXPORT_SYMBOL_GPL(hidraw_disconnect); |
529 | 529 | ||