Hi,

registering a device only partially initialised is quite bad an
idea.

        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], 2003-07-16 17:06:28+02:00, [EMAIL PROTECTED]
  - fix race between probe and open


 usb-skeleton.c |   37 +++++++++++++++----------------------
 1 files changed, 15 insertions(+), 22 deletions(-)


diff -Nru a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c
--- a/drivers/usb/usb-skeleton.c        Wed Jul 16 17:08:24 2003
+++ b/drivers/usb/usb-skeleton.c        Wed Jul 16 17:08:24 2003
@@ -507,7 +507,7 @@
        struct usb_endpoint_descriptor *endpoint;
        size_t buffer_size;
        int i;
-       int retval;
+       int retval = -ENOMEM;
 
        /* See if the device offered us matches what we can accept */
        if ((udev->descriptor.idVendor != USB_SKEL_VENDOR_ID) ||
@@ -515,18 +515,11 @@
                return -ENODEV;
        }
 
-       retval = usb_register_dev (interface, &skel_class);
-       if (retval) {
-               /* something prevented us from registering this driver */
-               err ("Not able to get a minor for this device.");
-               goto exit;
-       }
-
        /* allocate memory for our device state and initialize it */
        dev = kmalloc (sizeof(struct usb_skel), GFP_KERNEL);
        if (dev == NULL) {
                err ("Out of memory");
-               goto exit_minor;
+               goto error;
        }
        memset (dev, 0x00, sizeof (*dev));
 
@@ -603,24 +596,24 @@
        /* allow device read, write and ioctl */
        dev->present = 1;
 
+       /* we can register the device now, as it is ready */
+       usb_set_intfdata (interface, dev);
+       retval = usb_register_dev (interface, &skel_class);
+       if (retval) {
+               /* something prevented us from registering this driver */
+               err ("Not able to get a minor for this device.");
+               usb_set_intfdata (interface, NULL);
+               goto error;
+       }
+
+
        /* let the user know what node this device is now attached to */
        info ("USB Skeleton device now attached to USBSkel-%d", dev->minor);
-
-       goto exit;
+       return 0;
 
 error:
        skel_delete (dev);
-       dev = NULL;
-
-exit_minor:
-       usb_deregister_dev (interface, &skel_class);
-
-exit:
-       if (dev) {
-               usb_set_intfdata (interface, dev);
-               return 0;
-       }
-       return -ENODEV;
+       return retval;
 }
 
 

===================================================================


This BitKeeper patch contains the following changesets:
1.1470
## Wrapped with gzip_uu ##


begin 664 bkpatch28295
M'XL(`&AJ%3\``\55:T_44!#]W/LK)I`81+>]T]>6)6M0(4KD%91/:LC==G;;
MT.TE]]YE(:[_W6D7`8TB&HU]MW-F.N?,2;L*)Y;,P--U=4%&K,)K;=W`X^OI
MK*#&;VAV-IOZVDPX=JPUQX)23RE8)@3O#)$-'%D7IH(A1\KE)7#$#CSTHYLG
M[NJ<!M[QSJN3O>?'[EMAIL PROTECTED]'\+)4S83>DH/A4#AM+E1=V"WEREHWOC.JL5-RRL_U
M='$#7812AKPFV(]DDBXPE7%_D6.!J&*D0H9QEL:B)E>J>JNNFMEESY9M]]_6
MB&0?8TPC*7'!)6(4VX`^QGT),@ID/\`4L#^0Z2#,GLAP("[EMAIL PROTECTED]"3
[EMAIL PROTECTED](O10X]&%>78%1.,"(W)[EMAIL PROTECTED]@[EMAIL 
PROTECTED]>0;&QD*(YN]12]WUR$
MD$J*9W#>3NK'S1>F96^#F1VU>\^>$8O,L/R6S0;*"!=QE#$;ZD=9P;>4I!1A
MAO?(]XO:[:A23"1&\0+C),PZ\_P\IW73/R0BK"/3;!D]KWD&?JEXY*;PJ9B]
MGQB:?'P`&SXF&.("$\SZG?'B[VR'@RA^B.T2Z(7A?S/><AJ'T#/S;F,C'=TS
MF#^PY7:"$E#L+D]>[EMAIL PROTECTED])@J#*&W<W"XO[._V8(R8!V3<*/#=B?/[EMAIL PROTECTED]
M9E/LIC(!Y*?!.LP)<M5PG4G5CA)<25#01<5,&SU_"LI"Y:"RC%#%%:P'PF,>
MIY;<*;]_7"BG8(VOR(Q9G:[EMAIL PROTECTED]<IWFMK&V3JC&L
M+1,?PR?NF=NS_&UU9=5,6&^Z($XMN"2,C9[>]-Q&&6.OQ>YZ])@JK*T<:`=J
M5!-;`B;\:54PK1IM8*S-=4I'U5]I7W\_L8.3O;T.=5=)[[/XP.MV*C,(6UT[
ML9G#S#0@>[EMAIL PROTECTED]>_B#RDO(S.YL.QZF2A8I'[EMAIL PROTECTED]@]-79B08`
!````
`
end



-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to