Hi,
I'm using linux 2.4.14 with a UMAX 2200 USB scanner. When I do a "modprobe
scanner" and "rmmod scanner", the rmmod process get stuck forever.
The problem comes from disconnect_scanner(). It does a
down (&(scn->sem));
then calls usb_unlink_urb().
For some reason an interrupt is generated during that moment, so
irq_scanner() is called. irq_scanner() also does a
down (&(scn->sem));
==> problem.
I think the down (&(scn->sem)); / up (&(scn->sem)); in
disconnect_scanner() is unnecessary because the module cannot be removed
if a process is using it, so that function will not be called. Removing
them solves my problem.
Also in probe_scanner(), there is a couple up(&scn_mutex); missing before
the next 2 return NULL;
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 11/900 us ( 1%), #Int= 1, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=ef80
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1606 ProdID=0230 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=00(>ifc ) Sub=00 Prot=00 Driver=usbscanner
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 1 Ivl= 1ms
00:1f.2 USB Controller: Intel Corporation 82801AA USB (rev 02) (prog-if 00
[UHCI])
Subsystem: Intel Corporation 82801AA USB
Flags: bus master, medium devsel, latency 0, IRQ 9
I/O ports at ef80 [size=32]
Frank.
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel