Hi,

speedtouch povides an ioctl handler through usbfs.
It must not be reentered. A semaphore ensures that.

        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-12-18 15:39:05+01:00, [EMAIL PROTECTED]
  - fix ioctl reentrancy race


 speedtouch.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)


diff -Nru a/drivers/usb/misc/speedtouch.c b/drivers/usb/misc/speedtouch.c
--- a/drivers/usb/misc/speedtouch.c     Wed Dec 18 15:39:28 2002
+++ b/drivers/usb/misc/speedtouch.c     Wed Dec 18 15:39:28 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 BitKeeper patch contains the following changesets:
1.1122
## Wrapped with gzip_uu ##


begin 664 bkpatch5128
M'XL(`*"(`#X``ZU4:VO;,!3];/V*"X71T3F69/FAE(QN;=C"'@U="MNGX,B*
M;>)819;[`/_XR7:7T;&&KJL17%E7Y^C<JX,.X+*6>NRHLKB6&AW`1U4;^RLK
M5<E1KK:R+*KF=J1T9I,72MFDURU[`\);;5RCI:R]3-,`V3WSQ(@<;*H>.V3D
M[U;,W94<.Q?3#Y>?WUT@-)G`:9Y4F?PF#4PF:+4Y21M9CC9:)7EW7+M+MQ1C
M0@@-L!^$)&AI[/NL)2%>I7::THBO5R%'@Z"3OTE_R$4))3%A-`I8RP+.0G0&
M9&0/H("I1^R(@01CGX]Q<(3)&&/8PPU'!%R,WL/_5W"*!+BP+FZA4,*48/M:
M&9U4X@YT(B3Z!%9NX*/Y[]8A]Q\_A'""T5O(M,Q.!JE";=M4=P767E.OO&U1
M"Z^^DC(UJA$VWS<-QS3J(HU;S((H;#OM:\(99S''0;K>UZ0G\`^7XELJVYXH
M9+U%]L(ZV[Q\&7M]]-0R>F^1B)%[;T7/<U8,+GM!9Q7632IMA+SO*V2E6B4E
ME$IL8*WTO>U,KE63Y6"+7-?6=,-UG(.K;_IA333??S//<.6,,-L;5)O$%`+.
MIJ?VE9@NOUPNIM\/F[0NE_:@9:]OV<E]?8S.8NY;Q&P(CBT.BC=:FNND/$8S
MCOO55-U4AZ\>(>`X[`B&X#@#%B:PVYXF)ED656'@L*BLM$K(`<<''-^'D[=_
MX&:<D(<`=_KU?+'XT5$2UE/:0)'37#VFN<,VNH)?=>Z>5Y%+L:F;[22)_#"A
,TD<_`1?EPY3;!0``
`
end



-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to