USB: yurex: fix race between probe() and read()
authorOliver Neukum <oneukum@suse.de>
Mon, 19 May 2014 11:52:20 +0000 (13:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 May 2014 23:03:58 +0000 (16:03 -0700)
There's a window during which read() would return 0 instead
of a correct error for no data yet. Reorder initialization
to fix the race.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/yurex.c

index 24278208bf7487b2833ca8e8751f850b23eb312e..1472805083decac41600c55e29af6fc9ab43c47b 100644 (file)
@@ -296,6 +296,7 @@ static int yurex_probe(struct usb_interface *interface, const struct usb_device_
 
        /* save our data pointer in this interface device */
        usb_set_intfdata(interface, dev);
+       dev->bbu = -1;
 
        /* we can register the device now, as it is ready */
        retval = usb_register_dev(interface, &yurex_class);
@@ -306,8 +307,6 @@ static int yurex_probe(struct usb_interface *interface, const struct usb_device_
                goto error;
        }
 
-       dev->bbu = -1;
-
        dev_info(&interface->dev,
                 "USB YUREX device now attached to Yurex #%d\n",
                 interface->minor);