* [PATCH] Fix hiddev's use of usb_find_interface
@ 2010-09-12 19:32 Guillaume Chazarain
2010-09-13 11:25 ` Arnd Bergmann
0 siblings, 1 reply; 6+ messages in thread
From: Guillaume Chazarain @ 2010-09-12 19:32 UTC (permalink / raw)
To: Arnd Bergmann, Jiri Kosina, Greg Kroah-Hartman, linux-kernel
Cc: Guillaume Chazarain
My macbook infrared remote control was broken by commit
bd25f4dd6972755579d0ea50d1a5ace2e9b00d1a:
HID: hiddev: use usb_find_interface, get rid of BKL
This device appears in dmesg as:
apple 0003:05AC:8242.0001: hiddev0,hidraw0: USB HID v1.11 Device
[Apple Computer, Inc. IR Receiver] on usb-0000:00:1d.2-1/input0
It stopped working as lircd was getting ENODEV when opening /dev/usb/hiddev0.
AFAICS hiddev_driver is a dummy driver so usb_find_interface(&hiddev_driver)
does not find anything.
The device is associated with the usbhid driver, so let's do
usb_find_interface(&hid_driver) instead.
$ ls -l /sys/devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/usb/hiddev0/device/driver
lrwxrwxrwx 1 root root 0 2010-09-12 16:28 /sys/devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/usb/hiddev0/device/driver -> ../../../../../../bus/usb/drivers/usbhid
Signed-off-by: Guillaume Chazarain <guichaz@gmail.com>
---
drivers/hid/usbhid/hid-core.c | 5 +++++
drivers/hid/usbhid/hiddev.c | 2 +-
drivers/hid/usbhid/usbhid.h | 1 +
3 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index b729c02..7b2f7f6 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -1445,6 +1445,11 @@ static const struct hid_device_id hid_usb_table[] = {
{ }
};
+struct usb_interface *usbhid_find_interface(int minor)
+{
+ return usb_find_interface(&hid_driver, minor);
+}
+
static struct hid_driver hid_usb_driver = {
.name = "generic-usb",
.id_table = hid_usb_table,
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
index 0a29c51..681e620 100644
--- a/drivers/hid/usbhid/hiddev.c
+++ b/drivers/hid/usbhid/hiddev.c
@@ -270,7 +270,7 @@ static int hiddev_open(struct inode *inode, struct file *file)
struct hiddev *hiddev;
int res;
- intf = usb_find_interface(&hiddev_driver, iminor(inode));
+ intf = usbhid_find_interface(iminor(inode));
if (!intf)
return -ENODEV;
hid = usb_get_intfdata(intf);
diff --git a/drivers/hid/usbhid/usbhid.h b/drivers/hid/usbhid/usbhid.h
index 693fd3e..89d2e84 100644
--- a/drivers/hid/usbhid/usbhid.h
+++ b/drivers/hid/usbhid/usbhid.h
@@ -42,6 +42,7 @@ void usbhid_submit_report
(struct hid_device *hid, struct hid_report *report, unsigned char dir);
int usbhid_get_power(struct hid_device *hid);
void usbhid_put_power(struct hid_device *hid);
+struct usb_interface *usbhid_find_interface(int minor);
/* iofl flags */
#define HID_CTRL_RUNNING 1
--
1.7.0.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH] Fix hiddev's use of usb_find_interface
2010-09-12 19:32 [PATCH] Fix hiddev's use of usb_find_interface Guillaume Chazarain
@ 2010-09-13 11:25 ` Arnd Bergmann
2010-09-13 11:28 ` Jiri Kosina
0 siblings, 1 reply; 6+ messages in thread
From: Arnd Bergmann @ 2010-09-13 11:25 UTC (permalink / raw)
To: Guillaume Chazarain; +Cc: Jiri Kosina, Greg Kroah-Hartman, linux-kernel
On Sunday 12 September 2010, Guillaume Chazarain wrote:
> My macbook infrared remote control was broken by commit
> bd25f4dd6972755579d0ea50d1a5ace2e9b00d1a:
> HID: hiddev: use usb_find_interface, get rid of BKL
Right, my bug. Sorry for the trouble you went through.
A few other people have reported the same and Jiri has done
a fix that was merged in 2.6.36-rc2.
Arnd
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Fix hiddev's use of usb_find_interface
2010-09-13 11:25 ` Arnd Bergmann
@ 2010-09-13 11:28 ` Jiri Kosina
2010-09-13 11:38 ` Guillaume Chazarain
0 siblings, 1 reply; 6+ messages in thread
From: Jiri Kosina @ 2010-09-13 11:28 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: Guillaume Chazarain, Greg Kroah-Hartman, linux-kernel
On Mon, 13 Sep 2010, Arnd Bergmann wrote:
> > My macbook infrared remote control was broken by commit
> > bd25f4dd6972755579d0ea50d1a5ace2e9b00d1a:
> > HID: hiddev: use usb_find_interface, get rid of BKL
>
> Right, my bug. Sorry for the trouble you went through.
>
> A few other people have reported the same and Jiri has done
> a fix that was merged in 2.6.36-rc2.
Yeah -- Guillaume, I think that you are actually seeing symptoms of
intfdata being bogus. Could you please try with any kernel with commit
9c9e54a8df0be48 ("HID: hiddev: fix memory corruption due to invalid
intfdata") applied (which is the one Arnd is talking about) and report
back whether the problem is fixed by it?
Thanks,
--
Jiri Kosina
SUSE Labs, Novell Inc.
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] Fix hiddev's use of usb_find_interface
2010-09-13 11:28 ` Jiri Kosina
@ 2010-09-13 11:38 ` Guillaume Chazarain
2010-09-13 21:18 ` Guillaume Chazarain
2010-09-14 8:59 ` Jiri Kosina
0 siblings, 2 replies; 6+ messages in thread
From: Guillaume Chazarain @ 2010-09-13 11:38 UTC (permalink / raw)
To: Jiri Kosina; +Cc: Arnd Bergmann, Greg Kroah-Hartman, linux-kernel
On Mon, Sep 13, 2010 at 1:28 PM, Jiri Kosina <jkosina@suse.cz> wrote:
> Yeah -- Guillaume, I think that you are actually seeing symptoms of
> intfdata being bogus. Could you please try with any kernel with commit
> 9c9e54a8df0be48 ("HID: hiddev: fix memory corruption due to invalid
> intfdata") applied (which is the one Arnd is talking about) and report
> back whether the problem is fixed by it?
I also saw the problem with 2.6.36-rc3. My problem is with
usb_find_interface(&hiddev_driver) not finding anything and
9c9e54a8df0be48aa359744f412377cc55c3b7d2 did not change this line.
In its current state I don't understand how hiddev_open() can possibly
work. I see people reporting suspend issues and stack traces in dmesg
but nobody reporting the driver being non-functioning, which is what
I'm doing here.
Thanks.
--
Guillaume
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] Fix hiddev's use of usb_find_interface
2010-09-13 11:38 ` Guillaume Chazarain
@ 2010-09-13 21:18 ` Guillaume Chazarain
2010-09-14 8:59 ` Jiri Kosina
1 sibling, 0 replies; 6+ messages in thread
From: Guillaume Chazarain @ 2010-09-13 21:18 UTC (permalink / raw)
To: Jiri Kosina; +Cc: Arnd Bergmann, Greg Kroah-Hartman, linux-kernel
On Mon, Sep 13, 2010 at 1:38 PM, Guillaume Chazarain <guichaz@gmail.com> wrote:
> I also saw the problem with 2.6.36-rc3.
For completeness, I also reproduced the problem with 2.6.36-rc4. Not
being familiar with the driver model, I'm not attached to the approach
I took in the patch, but it solves a real regression: hiddev not
working.
--
Guillaume
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Fix hiddev's use of usb_find_interface
2010-09-13 11:38 ` Guillaume Chazarain
2010-09-13 21:18 ` Guillaume Chazarain
@ 2010-09-14 8:59 ` Jiri Kosina
1 sibling, 0 replies; 6+ messages in thread
From: Jiri Kosina @ 2010-09-14 8:59 UTC (permalink / raw)
To: Guillaume Chazarain; +Cc: Arnd Bergmann, Greg Kroah-Hartman, linux-kernel
On Mon, 13 Sep 2010, Guillaume Chazarain wrote:
> > Yeah -- Guillaume, I think that you are actually seeing symptoms of
> > intfdata being bogus. Could you please try with any kernel with commit
> > 9c9e54a8df0be48 ("HID: hiddev: fix memory corruption due to invalid
> > intfdata") applied (which is the one Arnd is talking about) and report
> > back whether the problem is fixed by it?
>
> I also saw the problem with 2.6.36-rc3. My problem is with
> usb_find_interface(&hiddev_driver) not finding anything and
> 9c9e54a8df0be48aa359744f412377cc55c3b7d2 did not change this line.
>
> In its current state I don't understand how hiddev_open() can possibly
> work. I see people reporting suspend issues and stack traces in dmesg
> but nobody reporting the driver being non-functioning, which is what
> I'm doing here.
You are right. I have now applied your patch, thanks a lot for tracking it
down.
--
Jiri Kosina
SUSE Labs, Novell Inc.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-09-14 8:59 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-12 19:32 [PATCH] Fix hiddev's use of usb_find_interface Guillaume Chazarain
2010-09-13 11:25 ` Arnd Bergmann
2010-09-13 11:28 ` Jiri Kosina
2010-09-13 11:38 ` Guillaume Chazarain
2010-09-13 21:18 ` Guillaume Chazarain
2010-09-14 8:59 ` Jiri Kosina
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.