ChangeSet 1.865.28.7, 2002/12/19 12:09:56-08:00, [EMAIL PROTECTED]
[PATCH] USB: speedtouch reentrancy race through usbfs
speedtouch povides an ioctl handler through usbfs.
It must not be reentered. A semaphore ensures that.
diff -Nru a/drivers/usb/misc/speedtouch.c b/drivers/usb/misc/speedtouch.c
--- a/drivers/usb/misc/speedtouch.c Sun Dec 22 00:40:52 2002
+++ b/drivers/usb/misc/speedtouch.c Sun Dec 22 00:40:52 2002
@@ -146,6 +146,7 @@
/* data thread */
DECLARE_WAIT_QUEUE_HEAD (udsl_wqh);
static DECLARE_COMPLETION(thread_grave);
+static DECLARE_MUTEX(udsl_usb_ioctl_lock);
static unsigned int datapid;
#ifdef DEBUG_PACKET
@@ -890,7 +891,7 @@
{
struct usb_device *dev = interface_to_usbdev (intf);
struct udsl_instance_data *instance;
- int i;
+ int i,retval;
for (i = 0; i < MAX_UDSL; i++)
if (minor_data[i] && (minor_data[i]->usb_dev == dev))
@@ -901,17 +902,20 @@
instance = minor_data[i];
+ down(&udsl_usb_ioctl_lock);
switch (code) {
case UDSL_IOCTL_START:
- return udsl_usb_data_init (instance);
+ retval = udsl_usb_data_init (instance);
break;
case UDSL_IOCTL_STOP:
- return udsl_usb_data_exit (instance);
+ retval = udsl_usb_data_exit (instance);
break;
default:
+ retval = -ENOTTY;
break;
}
- return -EINVAL;
+ up(&udsl_usb_ioctl_lock);
+ return retval;
}
static int udsl_usb_probe (struct usb_interface *intf, const struct usb_device_id *id)
-------------------------------------------------------
This SF.NET email is sponsored by: Order your Holiday Geek Presents Now!
Green Lasers, Hip Geek T-Shirts, Remote Control Tanks, Caffeinated Soap,
MP3 Players, XBox Games, Flying Saucers, WebCams, Smart Putty.
T H I N K G E E K . C O M http://www.thinkgeek.com/sf/
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel