aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-input.c
diff options
context:
space:
mode:
authorBenjamin Tissoires <benjamin.tissoires@enac.fr>2011-02-15 09:41:10 -0500
committerJiri Kosina <jkosina@suse.cz>2011-02-15 17:47:05 -0500
commitd9236303d0b7ba8bbaeb6adbbf088c3fe2a9ab9e (patch)
tree24e2ca2a398484c986ab3b991a3487ac4c09f518 /drivers/hid/hid-input.c
parent6497dc3a5473a0a7948765c45c3dad9ef0395b28 (diff)
HID: kernel oops in out_cleanup in function hidinput_connect
Goto out_cleanup infers a kernel oops: hidinput_disconnect calls input_unregister_driver to all members of hid->inputs. However, hidinput already has been added to hid->inputs even though input_register_device was not called. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Reviewed-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-input.c')
-rw-r--r--drivers/hid/hid-input.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 7f552bfad32c..f53911dcdc2d 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -928,6 +928,7 @@ int hidinput_connect(struct hid_device *hid, unsigned int force)
928 return 0; 928 return 0;
929 929
930out_cleanup: 930out_cleanup:
931 list_del(&hidinput->list);
931 input_free_device(hidinput->input); 932 input_free_device(hidinput->input);
932 kfree(hidinput); 933 kfree(hidinput);
933out_unwind: 934out_unwind: