2009-09-10 17:40:53

by SephirXV

[permalink] [raw]
Subject: [PATCH 1/3] bluetooth: hidp+hidraw disconnect

From: Christopher Olson <[email protected]>

Somewhere between 2.6.26 and 2.6.28, hidraw began connecting to HIDP
devices which don't strictly define their behavior in the HID usage
table, and without any patching on my part. These non-compliant
devices wouldn't automatically disconnect, leaving hidraw files which
did nothing.

Signed-off-by: Christopher Olson <[email protected]>

---

--- net/bluetooth/hidp/core.c 2009-09-10 09:32:20.000000000 -0500
+++ net/bluetooth/hidp/core.c.1 2009-09-10 09:31:37.000000000 -0500
@@ -40,6 +40,7 @@

#include <linux/input.h>
#include <linux/hid.h>
+#include <linux/hidraw.h>

#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
@@ -736,6 +737,8 @@ static void hidp_stop(struct hid_device

if (hid->claimed & HID_CLAIMED_INPUT)
hidinput_disconnect(hid);
+ if (hid->claimed & HID_CLAIMED_HIDRAW)
+ hidraw_disconnect(hid);
hid->claimed = 0;
}


2009-09-10 17:44:11

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/3] bluetooth: hidp+hidraw disconnect

Hi Christopher,

> Somewhere between 2.6.26 and 2.6.28, hidraw began connecting to HIDP
> devices which don't strictly define their behavior in the HID usage
> table, and without any patching on my part. These non-compliant
> devices wouldn't automatically disconnect, leaving hidraw files which
> did nothing.
>
> Signed-off-by: Christopher Olson <[email protected]>
>
> ---
>
> --- net/bluetooth/hidp/core.c 2009-09-10 09:32:20.000000000 -0500
> +++ net/bluetooth/hidp/core.c.1 2009-09-10 09:31:37.000000000 -0500
> @@ -40,6 +40,7 @@
>
> #include <linux/input.h>
> #include <linux/hid.h>
> +#include <linux/hidraw.h>
>
> #include <net/bluetooth/bluetooth.h>
> #include <net/bluetooth/hci_core.h>
> @@ -736,6 +737,8 @@ static void hidp_stop(struct hid_device
>
> if (hid->claimed & HID_CLAIMED_INPUT)
> hidinput_disconnect(hid);
> + if (hid->claimed & HID_CLAIMED_HIDRAW)
> + hidraw_disconnect(hid);
> hid->claimed = 0;
> }

I am pretty sure such a patch or similar is in net-next-2.6 already.

Regards

Marcel