linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] USB hotplug race
@ 2004-03-17 14:27 Petr Baudis
  2004-03-26 23:05 ` Greg KH
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Petr Baudis @ 2004-03-17 14:27 UTC (permalink / raw)
  To: linux-hotplug

  Hello,

  so I finally upgraded from 2.4 to 2.6 (2.6.4), and one of the few
problems I've hit is hotplug. Basically, when I start up hotplug while
my Zaurus is plugged, everything works fine and usbnet gets loaded,
however when I plug Zaurus after hotplug was loaded, it trashes the
event.

  After populating the hotplug scripts with plethora of debug prints,
I've tracked it down to usb_convert_vars() - basically, immediatelly
after the USB device is plugged and the signal is already delivered to
hotplug, the sysfs tree isn't yet populated by all the relevant data
and only detach_state is present there - no bDeviceClass or so.

  Looking at drivers/usb/core/message.c:usb_set_configuration(),
device_add() is called first (which I suppose calls /sbin/hotplug
through platform_notify ?), and _then_ this set of files is created. It
doesn't look like there would be a lot of time to trigger the race, but
I personally get a _very_ high reproducibility rate (actually I'm not
sure if I ever managed not to trigger it).

  I don't know how to fix it in the kernel since we would probably need to
first add kobject, then pop out and create the sysfs nodes, and _then_ call the
userspace helper. So I just created a trivial bandaid for
/etc/hotplug/usb.agent, which fixes this for me:

--- hotplug-2004_03_11/etc/hotplug/usb.agent	Fri Mar 12 00:18:23 2004
+++ hotplug-2004_03_11+pasky/etc/hotplug/usb.agent	Wed Mar 17 00:17:47 2004
@@ -354,9 +354,14 @@
     # they happen to issue requests at the same time ... it happens easily
     # with slow HID devices and "usbmodules".
     # starting with 2.5 (DEVPATH set), all hcds must queue control traffic.
+
+    # However by the time of 2.6.4, the kernel has an easy-to-trigger (at
+    # least for me) race condition when /sbin/hotplug already got called but
+    # the sysfs device directory is not yet populated with all the neccessary
+    # files. --pasky
-    if [ "$DEVPATH" = "" ]; then
+    # if [ "$DEVPATH" = "" ]; then
 	sleep 3
-    fi
+    # fi
 
     usb_convert_vars
 

  Please consider applying.

  PS: By the way, usb.agent.(orig|rej) slipped into the 2004_03_11
distribution.

  Kind regards,

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore all
progress depends on the unreasonable man. -- George Bernard Shaw


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id\x1470&alloc_id638&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-03-27  0:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-17 14:27 [PATCH] USB hotplug race Petr Baudis
2004-03-26 23:05 ` Greg KH
2004-03-27  0:05 ` Oliver Neukum
2004-03-27  0:12 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).