Hi, this should close the last unload race I know about. Unfortunately 2.5 currently doesn't link for me. So here it is. Somebody with an SMP testing this would be cool.
Regards Oliver You can import this changeset into BK by piping this whole message to: '| bk receive [path to repository]' or apply the patch as usual. =================================================================== [EMAIL PROTECTED], 2002-07-12 13:31:13+02:00, [EMAIL PROTECTED] - fix module unload race diff -Nru a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c --- a/drivers/usb/core/usb.c Fri Jul 12 14:20:00 2002 +++ b/drivers/usb/core/usb.c Fri Jul 12 14:20:00 2002 @@ -131,6 +131,7 @@ { struct usb_driver *driver; void *priv; + int m; driver = intf->driver; @@ -142,7 +143,11 @@ /* as soon as we increase the module use count we drop the BKL before that we must not sleep */ if (driver->owner) { - __MOD_INC_USE_COUNT(driver->owner); + m = try_inc_mod_count(driver->owner); + if (unlikely(m == 0)) { + err("Dieing driver still bound to device.\n"); + return; + } unlock_kernel(); } down(&driver->serialize); /* if we sleep here on an umanaged driver @@ -170,13 +175,15 @@ void *usb_bind_driver(struct usb_driver *driver, struct usb_device *dev, unsigned int ifnum) { - int i; + int i,m; void *private = NULL; const struct usb_device_id *id; struct usb_interface *interface; if (driver->owner) { - __MOD_INC_USE_COUNT(driver->owner); + m = try_inc_mod_count(driver->owner); + if (unlikely(m == 0)) + return NULL; /* this horse is dead - don't ride*/ unlock_kernel(); } =================================================================== This BitKeeper patch contains the following changesets: 1.659 ## Wrapped with gzip_uu ## begin 664 bkpatch2474 M'XL(`'#)+CT``ZV476^;,!2&K_&O.&HOEK8#;(SY2,74K9VV:M56=>K=I`K, M:6*%X,E`VVCLO\^0*5&EK-/:(2/L<^S7CP\O[,-U@V;JZ$K=H2'[\%$WK1UB MK6OTYGJ)E:J[!T^;F4U>:6V3_A#VURO\8N&V!K'Q[P-![)3+O)5SL)EFZC"/ M;R+MZCM.G:OW'ZXOWEX1DF5P.L_K&7[%%K*,%(N3LL/*6QB=SX?=^DVZ#RAE MC`6"<A$QT0<)YV'/(EJ4MEL&<7I;1"E9\YSL(G^L%="8!32ED1"]B#F-R1DP M+Q(IT,"GL<\"8'S*V93Q(QI,*84GI.&(@4O).WCY`4Z)!!=NU0,L==E5"%U= MZ;P$DTLDGT`D42K(Y;9LQ/W'BQ":4_)F!VIIA@,V?M<4P^W)+7)(4Q;U`0]% MV,LH0!1)P&)9Y)R*IPKS2%-J@UOA\04PQFVSM4A8,MIA]_S=WG@F+YD9G)VL M9:1>_@V16@U!>Q:&$1\]PFCX3(]0</E_-(FJI<$EUNW&*DT^0Y"ZLR%[$H.R MK5;6-.OR?@'7W(_-FN#R#Y5^AIW.&>?`B*,&D&-RQD)AA^?#0Q#'64(&K5G= M6-H;RWDSXDW6N[MO]'V-YN#8SE.W,+%>5PNL5A.[*`-Z<``_;,9!8R9[9PI5 M/?N-#4VKJ@H*JU5"JZ'$.R71^U;OC5J.P;8S]=#]:8%B/@+%&TSU>@2-TW4\ M!?Y2T.VF\/GZXN(8_$-HYZJ!N38-@NV4:+]B%TI=OVK!J!(/_>V?4LY1+IIN 1F151(A**"?D%S-<24Y,%```` ` end ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Gadgets, caffeine, t-shirts, fun stuff. http://thinkgeek.com/sf _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel