All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.