[HID] Fix hiddev devfs oops
diff mbox series

Message ID 20041005124914.GA1009@gondor.apana.org.au
State New, archived
Headers show
Series
  • [HID] Fix hiddev devfs oops
Related show

Commit Message

Herbert Xu Oct. 5, 2004, 12:49 p.m. UTC
Hi:

There is a long-standing devfs_unregister oops in hid/hiddev.  It's
caused by hid calling hiddev_exit before unregistering itself which
in turn calls hiddev_disconnect.

hiddev_exit removes the directory which contains the hiddev devices.
Therefore it needs to be called after the hiddev devices have been
disconnected.

This patch fixes that.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Marcelo, the same fix is needed in 2.4 as well.

Cheers,

Comments

Marcelo Tosatti Oct. 11, 2004, 5:21 p.m. UTC | #1
On Tue, Oct 05, 2004 at 10:49:14PM +1000, Herbert Xu wrote:
> Hi:
> 
> There is a long-standing devfs_unregister oops in hid/hiddev.  It's
> caused by hid calling hiddev_exit before unregistering itself which
> in turn calls hiddev_disconnect.
> 
> hiddev_exit removes the directory which contains the hiddev devices.
> Therefore it needs to be called after the hiddev devices have been
> disconnected.
> 
> This patch fixes that.
> 
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
> 
> Marcelo, the same fix is needed in 2.4 as well.

Herbert,

Would be nice to have a version which applies to 2.4 also.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Herbert Xu Oct. 12, 2004, 9:21 p.m. UTC | #2
On Mon, Oct 11, 2004 at 02:21:47PM -0300, Marcelo Tosatti wrote:
> On Tue, Oct 05, 2004 at 10:49:14PM +1000, Herbert Xu wrote:
> > 
> > There is a long-standing devfs_unregister oops in hid/hiddev.  It's
> > caused by hid calling hiddev_exit before unregistering itself which
> > in turn calls hiddev_disconnect.
> > 
> > hiddev_exit removes the directory which contains the hiddev devices.
> > Therefore it needs to be called after the hiddev devices have been
> > disconnected.
> > 
> > This patch fixes that.
> > 
> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
> > 
> > Marcelo, the same fix is needed in 2.4 as well.
> 
> Would be nice to have a version which applies to 2.4 also.

I did include a 2.4 patch in that email :)

Here it is again.
Pete Zaitcev Oct. 12, 2004, 10:23 p.m. UTC | #3
On Wed, 13 Oct 2004 07:21:54 +1000
Herbert Xu <herbert@gondor.apana.org.au> wrote:

> > > Marcelo, the same fix is needed in 2.4 as well.
> > 
> > Would be nice to have a version which applies to 2.4 also.
> 
> I did include a 2.4 patch in that email :)

Herbert, I'm sorry for the wait. Marcelo asked me to take care of this,
but I kept postponing it because I wanted to look closer, and this and
that... It looks entirely reasonable and my hid devices continue to work,
but I haven't tested hiddev (UPS or something ?).

-- Pete

diff -urp -X dontdiff linux-2.4.28-pre3/drivers/usb/hid-core.c linux-2.4.28-pre3-usb/drivers/usb/hid-core.c
--- linux-2.4.28-pre3/drivers/usb/hid-core.c	2004-09-12 14:24:09.000000000 -0700
+++ linux-2.4.28-pre3-usb/drivers/usb/hid-core.c	2004-10-12 15:15:40.000000000 -0700
@@ -1459,8 +1459,8 @@ static int __init hid_init(void)
 
 static void __exit hid_exit(void)
 {
-	hiddev_exit();
 	usb_deregister(&hid_driver);
+	hiddev_exit();
 }
 
 module_init(hid_init);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Herbert Xu Oct. 12, 2004, 11:14 p.m. UTC | #4
On Tue, Oct 12, 2004 at 03:23:43PM -0700, Pete Zaitcev wrote:
> 
> Herbert, I'm sorry for the wait. Marcelo asked me to take care of this,
> but I kept postponing it because I wanted to look closer, and this and
> that... It looks entirely reasonable and my hid devices continue to work,
> but I haven't tested hiddev (UPS or something ?).

Yes that's exactly the situation I'm in (APC UPS via USB) and it does fix
the OOPS for me when hid is unloaded with the UPS connected.

Cheers,
Adam Kropelin Oct. 13, 2004, 12:51 a.m. UTC | #5
Herbert Xu wrote:
> On Tue, Oct 12, 2004 at 03:23:43PM -0700, Pete Zaitcev wrote:
>>
>> Herbert, I'm sorry for the wait. Marcelo asked me to take care of
>> this, but I kept postponing it because I wanted to look closer, and
>> this and that... It looks entirely reasonable and my hid devices
>> continue to work, but I haven't tested hiddev (UPS or something ?).
>
> Yes that's exactly the situation I'm in (APC UPS via USB) and it does
> fix the OOPS for me when hid is unloaded with the UPS connected.

Another scenario to keep in mind is unplugging a USB device while a process 
still has its corresponding hiddev node open. I fixed that issue in 2.6 a 
while ago. I'm not sure if 2.4 is susceptible. It may or may not be 
orthogonal to the problem your patch addresses.

--Adam

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Herbert Xu Oct. 13, 2004, 2:20 a.m. UTC | #6
Adam Kropelin <akropel1@rochester.rr.com> wrote:
> 
> Another scenario to keep in mind is unplugging a USB device while a process 
> still has its corresponding hiddev node open. I fixed that issue in 2.6 a 
> while ago. I'm not sure if 2.4 is susceptible. It may or may not be 
> orthogonal to the problem your patch addresses.

It is unrelated to my issue but yet that fix is needed in 2.4 as well.

Patch
diff mbox series

===== drivers/usb/input/hid-core.c 1.94 vs edited =====
--- 1.94/drivers/usb/input/hid-core.c	2004-08-25 22:01:29 +10:00
+++ edited/drivers/usb/input/hid-core.c	2004-10-05 22:44:03 +10:00
@@ -1859,8 +1859,8 @@ 
 
 static void __exit hid_exit(void)
 {
-	hiddev_exit();
 	usb_deregister(&hid_driver);
+	hiddev_exit();
 }
 
 module_init(hid_init);