Re: pl2303 ttyUSB0: pl2303_open - failed submitting interrupt urb, error -28

Mark Lord
2006-06-12T23:21:29Z

Mark Lord wrote:
> Greg KH wrote:
>> So we should have finally covered both of them now.
>
> Yes, agreed.
>
> So if modify pl2303_open() to have it simulate -ENOMEM from
> usb_submit_urb(),
> then this should not crash the entire USB subsystem. Right?
>
> Ditto if it happens due to low-memory, rather than me hacking the code
> to test it?

Mmmm.. looks like it's still buggy, but we manage to avoid the bug
under *most* circumstances. Which is good!

But the bug will still need to be fixed. A failure from usb_submit_urb()
should not require a reboot to recover.
Here's the results of a simulated -ENOMEM test:

kernel BUG at kernel/workqueue.c:110!
invalid opcode: 0000 [#1]
PREEMPT
Modules linked in: pl2303 mct_u232 usblp usbserial usbhid snd_pcm_oss uhci_hcd ehci_hcd vmnet vmmon nfsd exportfs lockd nfs_acl sunrpc speedstep_centrino cpufreq_conservative cpufreq_stats cpufreq_userspace cpufreq_powersave freq_table cpufreq_ondemand thermal fan battery ac processor container video button rfcomm l2cap bluetooth cfq_iosched deflate zlib_deflate twofish serpent aes blowfish des sha256 sha1 crypto_null af_key af_packet sbp2 pcmcia ipw2200 ieee80211 ieee80211_crypt snd_intel8x0 snd_ac97_codec snd_ac97_bus yenta_socket ohci1394 ieee1394 snd_mixer_oss mousedev rsrc_nonstatic pcmcia_core mmc_core b44 mii firmware_class snd_pcm snd_timer snd soundcore serio_raw pcspkr snd_page_alloc psmouse intel_agp agpgart usbcore sg sr_mod cdrom unix
CPU: 0
EIP: 0060:[queue_work+81/96] Tainted: P VLI
EFLAGS: 00010286 (2.6.17-rc6-git2 #3)
EIP is at queue_work+0x51/0x60
eax: f317093c ebx: 00000000 ecx: b21b9f80 edx: f3170938
esi: f4782640 edi: f4782640 ebp: f7333414 esp: f7cc3e4c
ds: 007b es: 007b ss: 0068
Process khubd (pid: 1737, threadinfo=f7cc2000 task=b21bb070)
Stack: 00000000 f8a30d63 b01ca38f b02e136b f8884ad3 f7333400 f8c52080 f8c520a4
f7333414 f88867f2 f733347c f7333414 b022240f f7333414 f7333414 f889bae0
b02226a6 f7333414 b0221c87 f7333414 f7519c58 00000001 b0220e35 f7333400
Call Trace:
<f8a30d63> usb_serial_disconnect+0x53/0xd0 [usbserial] <b01ca38f> kref_put+0x2f/0x80
<f8884ad3> usb_disable_interface+0x53/0x70 [usbcore] <f88867f2> usb_unbind_interface+0x32/0x70 [usbcore]
<b022240f> __device_release_driver+0x5f/0xc0 <b02226a6> device_release_driver+0x16/0x30
<b0221c87> bus_remove_device+0x77/0x90 <b0220e35> device_del+0x35/0x70
<f8885733> usb_disable_device+0xb3/0x100 [usbcore] <f887f404> usb_disconnect+0x94/0x100 [usbcore]
<f887f3f2> usb_disconnect+0x82/0x100 [usbcore] <f887f3f2> usb_disconnect+0x82/0x100 [usbcore]
<f8881c1e> hub_thread+0x3be/0xc75 [usbcore] <b012efc0> autoremove_wake_function+0x0/0x50
<b02b6d9f> preempt_schedule+0x4f/0x70 <b012eed6> kthread+0xd6/0xe0
<f8881860> hub_thread+0x0/0xc75 [usbcore] <b012ee00> kthread+0x0/0xe0
<b0101005> kernel_thread_helper+0x5/0x10
Code: a8 08 75 1c 89 d8 5b c3 89 f6 8d 42 04 3b 42 04 75 19 8b 01 bb 01 00 00 00 e8 dc fa ff ff eb d3 e8 85 ae 18 00 89 d8 5b 89 f6 c3 <0f> 0b 6e 00 d1 de 2c b0 eb dd 90 8d 74 26 00 89 c2 a1 d4 d1 38
EIP: [queue_work+81/96] queue_work+0x51/0x60 SS:ESP 0068:f7cc3e4c
<6>note: khubd[1737] exited with preempt_count 1