[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-usb-users
Subject:    [Linux-usb-users] oops when unplugging FTDI FT232AM
From:       Arnim Laeuger <arnim.laeuger () gmx ! net>
Date:       2005-04-25 15:43:57
Message-ID: 426D103D.20409 () gmx ! net
[Download RAW message or body]

Hi all,

I have persistent problems with an USB->serial adaptor which contains an
FTDI FT232AM chip.

Two symptoms are observable, depending on whether ftdi_sio is loaded
before or after attaching the adaptor. The serial port has not been
opened in both cases.
1) when the driver is loaded before, my machine locks completely when
       the adaptor is unplugged
2) when the driver is loaded after attaching the adaptor, the machine
       sometimes locks and sometimes writes an oops to the kernel log

1) or 2) occur always when the adaptor is unplugged with loaded driver.
No problems at all when ftdi_sio module is never loaded during the
process.

The machine runs a stock 2.4.30 kernel with USB OHCI/EHCI. The USB
controller is
USB Controller: nVidia Corporation nForce2 USB Controller (rev a3)

devices.txt contains the output of /proc/bus/usb/devices (ftdi_sio not
loaded). The device in question is
T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
P:  Vendor=0403 ProdID=fb5a Rev= 2.00

ksymoops_unplug.txt is the output of ksymoops on the oops message. 
Symbols have been deleted.
ksymoops_modprobe-r.txt is the oops when ftdi_sio is removed with
'modprobe -r ftdi_sio' (device is not attached!).


It seems to me that something goes wrong inside ftdi_shutdown() when the 
device is unplugged. I have no clue what the problem could be with 
modprobe -r. Suggestions are welcome.


Best regards

    Arnim


["devices.txt" (text/plain)]

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.04
S:  Manufacturer=Linux 2.4.30 ehci_hcd
S:  Product=nVidia Corporation nForce2 USB Controller
S:  SerialNumber=00:02.2
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=   2 Ivl=256ms
T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 3
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB OHCI Root Hub
S:  SerialNumber=f8808000
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=   2 Ivl=255ms
T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=fb5a Rev= 2.00
S:  Manufacturer=ELV AG
S:  Product=ELV Univ. USB-Modul UM100
S:  SerialNumber=ELKNE1Z6
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 3
B:  Alloc= 56/900 us ( 6%), #Int=  4, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB OHCI Root Hub
S:  SerialNumber=f8806000
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=   2 Ivl=255ms
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=12  MxCh= 4
D:  Ver= 1.01 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=05e3 ProdID=0604 Rev= 0.12
S:  Product=USB Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=255ms
T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  6 Spd=12  MxCh= 2
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=04cc ProdID=1122 Rev= 1.10
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=255ms
T:  Bus=01 Lev=02 Prnt=06 Port=01 Cnt=01 Dev#=  7 Spd=12  MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=06cd ProdID=c001 Rev= 1.55
S:  Manufacturer=ACME usb Widgets
S:  Product=Sun keyboard & mouse HID
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=200mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=hid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:  If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=hid
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=10ms




["ksymoops_unplug.txt" (text/plain)]

ksymoops 2.4.8 on i686 2.4.30.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.30/ (default)
     -M (specified)

[lots of symbols deleted]

Apr 25 16:33:30 lola kernel: hub.c: new USB device 00:02.1-3, assigned address 2
Apr 25 16:33:30 lola kernel: usb.c: USB device 2 (vend/prod 0x403/0xfb5a) is not \
                claimed by any active driver.
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for FTDI SIO
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for FTDI \
                8U232AM Compatible
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for FTDI \
                FT232BM Compatible
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for USB-UIRT \
                Infrared Tranceiver
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for \
                Home-Electronics TIRA-1 IR Transceiver
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for FTDI SIO \
                compatible
Apr 25 16:33:37 lola kernel: usbserial.c: FTDI SIO compatible converter detected
Apr 25 16:33:37 lola kernel: usbserial.c: FTDI SIO compatible converter now attached \
                to ttyUSB0 (or usb/tts/0 for devfs)
Apr 25 16:33:37 lola kernel: ftdi_sio.c: v1.3.5:USB FTDI Serial Converters Driver
Apr 25 16:33:55 lola kernel: usb.c: USB disconnect on device 00:02.1-3 address 2
Apr 25 16:33:55 lola kernel: Unable to handle kernel NULL pointer dereference at \
                virtual address 0000000c
Apr 25 16:33:55 lola kernel: c012dc6c
Apr 25 16:33:55 lola kernel: *pde = 00000000
Apr 25 16:33:55 lola kernel: Oops: 0000
Apr 25 16:33:55 lola kernel: CPU:    0
Apr 25 16:33:55 lola kernel: EIP:    0010:[kfree+44/192]    Tainted: P 
Apr 25 16:33:55 lola kernel: EIP:    0010:[<c012dc6c>]    Tainted: P 
Using defaults from ksymoops -t elf32-i386 -a i386
Apr 25 16:33:55 lola kernel: EFLAGS: 00210016
Apr 25 16:33:55 lola kernel: eax: 00c60c60   ebx: 080480f4   ecx: 00000000   edx: \
                c100001c
Apr 25 16:33:55 lola kernel: esi: 00000000   edi: 00200002   ebp: f35d1380   esp: \
                f7c2df08
Apr 25 16:33:55 lola kernel: ds: 0018   es: 0018   ss: 0018
Apr 25 16:33:55 lola kernel: Process khubd (pid: 8, stackpage=f7c2d000)
Apr 25 16:33:55 lola kernel: Stack: f35d13ac 00200246 00000000 f35d1380 c01cf7de \
                080480f4 f9ba1cf3 080480f4 
Apr 25 16:33:55 lola kernel:        f692e000 00000001 f692e000 00000000 f88aa234 \
                f692e000 f692e01c f88ab502 
Apr 25 16:33:55 lola kernel:        f692e000 f88ac940 f1b78f00 f88ac960 c01d067a \
                f36a1c00 f692e000 00000100 
Apr 25 16:33:55 lola kernel: Call Trace:    [usb_free_urb+14/32] [<f9ba1cf3>] \
                [<f88aa234>] [<f88ab502>] [<f88ac940>]
Apr 25 16:33:55 lola kernel: Call Trace:    [<c01cf7de>] [<f9ba1cf3>] [<f88aa234>] \
                [<f88ab502>] [<f88ac940>]
Apr 25 16:33:55 lola kernel:   [<f88ac960>] [usb_disconnect+138/304] \
[usb_hub_port_connect_change+74/528] [usb_hub_events+221/624] [usb_hub_thread+53/176] \
                [arch_kernel_thread+40/64]
Apr 25 16:33:55 lola kernel:   [<f88ac960>] [<c01d067a>] [<c01d2a8a>] [<c01d2d2d>] \
                [<c01d2ef5>] [<c01055a8>]
Apr 25 16:33:55 lola kernel: Code: 2b 59 0c 89 d8 31 d2 f7 76 18 89 c3 8b 41 14 89 44 \
99 18 89


> > EIP; c012dc6c <kfree+2c/c0>   <=====

> > edx; c100001c <_end+d0b104/38515148>
> > ebp; f35d1380 <_end+332dc468/38515148>
> > esp; f7c2df08 <_end+37938ff0/38515148>

Trace; c01cf7de <usb_free_urb+e/20>
Trace; f9ba1cf3 <.data.end+1d7c/????>
Trace; f88aa234 <[usbserial]serial_shutdown+34/50>
Trace; f88ab502 <[usbserial]usb_serial_disconnect+92/200>
Trace; f88ac940 <[usbserial]usb_serial_driver+0/3c>
Trace; f88ac960 <[usbserial]usb_serial_driver+20/3c>
Trace; f88ac960 <[usbserial]usb_serial_driver+20/3c>
Trace; c01d067a <usb_disconnect+8a/130>
Trace; c01d2a8a <usb_new_device+16ca/1c50>
Trace; c01d2d2d <usb_new_device+196d/1c50>
Trace; c01d2ef5 <usb_new_device+1b35/1c50>
Trace; c01055a8 <machine_power_off+128/280>

Code;  c012dc6c <kfree+2c/c0>
00000000 <_EIP>:
Code;  c012dc6c <kfree+2c/c0>   <=====
   0:   2b 59 0c                  sub    0xc(%ecx),%ebx   <=====
Code;  c012dc6f <kfree+2f/c0>
   3:   89 d8                     mov    %ebx,%eax
Code;  c012dc71 <kfree+31/c0>
   5:   31 d2                     xor    %edx,%edx
Code;  c012dc73 <kfree+33/c0>
   7:   f7 76 18                  divl   0x18(%esi)
Code;  c012dc76 <kfree+36/c0>
   a:   89 c3                     mov    %eax,%ebx
Code;  c012dc78 <kfree+38/c0>
   c:   8b 41 14                  mov    0x14(%ecx),%eax
Code;  c012dc7b <kfree+3b/c0>
   f:   89 44 99 18               mov    %eax,0x18(%ecx,%ebx,4)
Code;  c012dc7f <kfree+3f/c0>
  13:   89 00                     mov    %eax,(%eax)


["ksymoops_modprobe-r.txt" (text/plain)]

ksymoops 2.4.8 on i686 2.4.30.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.30/ (default)
     -M (specified)

[lots of symbols deleted]

Apr 25 17:24:05 lola kernel: Unable to handle kernel paging request at virtual \
                address f9bb0d50
Apr 25 17:24:05 lola kernel: f88ab82b
Apr 25 17:24:05 lola kernel: *pde = 364a5067
Apr 25 17:24:05 lola kernel: Oops: 0002
Apr 25 17:24:05 lola kernel: CPU:    0
Apr 25 17:24:05 lola kernel: EIP:    0010:[<f88ab82b>]    Tainted: P 
Using defaults from ksymoops -t elf32-i386 -a i386
Apr 25 17:24:05 lola kernel: EFLAGS: 00210202
Apr 25 17:24:05 lola kernel: eax: f88ac97c   ebx: 00000000   ecx: f88ac8f0   edx: \
                f9bb0d50
Apr 25 17:24:05 lola kernel: esi: 000000ff   edi: f88ac8e0   ebp: f88ad6c0   esp: \
                e4ffff7c
Apr 25 17:24:05 lola kernel: ds: 0018   es: 0018   ss: 0018
Apr 25 17:24:05 lola kernel: Process modprobe.old (pid: 2501, stackpage=e4fff000)
Apr 25 17:24:05 lola kernel: Stack: f88a9000 fffffff0 f88a9000 bfffe228 f88ab76a \
                f88ac8e0 c0119dd7 f88a9000 
Apr 25 17:24:05 lola kernel:        fffffff0 e4fd8000 bfffe228 c0119167 f88a9000 \
                00000000 e4ffe000 40014020 
Apr 25 17:24:05 lola kernel:        bffff464 c0106c77 0806da78 0806da78 bfffe228 \
                40014020 bffff464 bfffe228 
Apr 25 17:24:05 lola kernel: Call Trace:    [<f88ab76a>] [<f88ac8e0>] \
                [free_module+23/160] [sys_delete_module+247/448] [system_call+51/56]
Apr 25 17:24:05 lola kernel: Call Trace:    [<f88ab76a>] [<f88ac8e0>] [<c0119dd7>] \
                [<c0119167>] [<c0106c77>]
Apr 25 17:24:05 lola kernel: Code: 89 02 c7 47 10 00 00 00 00 c7 41 04 00 00 00 00 5b \
5e 5f 5d 


> > EIP; f88ab82b <[usbserial]usb_serial_deregister+5b/70>   <=====

> > eax; f88ac97c <[usbserial]usb_serial_driver_list+0/8>
> > ecx; f88ac8f0 <[usbserial]generic_device+10/54>
> > edi; f88ac8e0 <[usbserial]generic_device+0/54>
> > ebp; f88ad6c0 <[usbserial].data.end+c65/2605>
> > esp; e4ffff7c <_end+24d0b064/38515148>

Trace; f88ab76a <[usbserial]usb_serial_exit+a/30>
Trace; f88ac8e0 <[usbserial]generic_device+0/54>
Trace; f88ab76a <[usbserial]usb_serial_exit+a/30>
Trace; f88ac8e0 <[usbserial]generic_device+0/54>
Trace; c0119dd7 <try_inc_mod_count+d97/1600>
Trace; c0119167 <try_inc_mod_count+127/1600>
Trace; c0106c77 <__up_wakeup+1067/1430>

Code;  f88ab82b <[usbserial]usb_serial_deregister+5b/70>
00000000 <_EIP>:
Code;  f88ab82b <[usbserial]usb_serial_deregister+5b/70>   <=====
   0:   89 02                     mov    %eax,(%edx)   <=====
Code;  f88ab82d <[usbserial]usb_serial_deregister+5d/70>
   2:   c7 47 10 00 00 00 00      movl   $0x0,0x10(%edi)
Code;  f88ab834 <[usbserial]usb_serial_deregister+64/70>
   9:   c7 41 04 00 00 00 00      movl   $0x0,0x4(%ecx)
Code;  f88ab83b <[usbserial]usb_serial_deregister+6b/70>
  10:   5b                        pop    %ebx
Code;  f88ab83c <[usbserial]usb_serial_deregister+6c/70>
  11:   5e                        pop    %esi
Code;  f88ab83d <[usbserial]usb_serial_deregister+6d/70>
  12:   5f                        pop    %edi
Code;  f88ab83e <[usbserial]usb_serial_deregister+6e/70>
  13:   5d                        pop    %ebp


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic