HID: magicmouse: fix oops after device removal
Michael Poole [Tue, 9 Mar 2010 11:47:35 +0000 (06:47 -0500)]
Ask the HID core not to register an input device for the mouse.
Fix an oops after removing the device, due to leaving the new
input device registered.

Signed-off-by: Michael Poole <mdpoole@troilus.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

drivers/hid/hid-magicmouse.c

index 4a3a94f..c174b64 100644 (file)
@@ -353,7 +353,7 @@ static int magicmouse_probe(struct hid_device *hdev,
                goto err_free;
        }
 
-       ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
+       ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT & ~HID_CONNECT_HIDINPUT);
        if (ret) {
                dev_err(&hdev->dev, "magicmouse hw start failed\n");
                goto err_free;
@@ -409,8 +409,11 @@ err_free:
 
 static void magicmouse_remove(struct hid_device *hdev)
 {
+       struct magicmouse_sc *msc = hid_get_drvdata(hdev);
+
        hid_hw_stop(hdev);
-       kfree(hid_get_drvdata(hdev));
+       input_unregister_device(msc->input);
+       kfree(msc);
 }
 
 static const struct hid_device_id magic_mice[] = {