Hi, I think I have a bug in the OHCI driver.
Kernel version: 4.4.11 (some old 3.14 seems fine, didn't try others)
Hardware: AMD SB850, Eagle III USB ADSL modem
Steps to reproduce:
1. boot with a USB keyboard
2. connect the modem
3. wait for the firmware, re-enumeration, etc
4. disconnect the modem when ueagle-atm says 'waiting for
synchronization' - instant panic
or
1. disconnect the keyboard
2. connect the modem
3. connect the keyboard on 'waiting for synchronization'
4. disconnect the modem - nothing yet
5. disconnect the keyboard - boom
Nothing bad happens without the keyboard. Nothing bad happens on
another machine with PS/2 keyboard and USB mouse, until I start X.
Then it crashes too.
I'm including two logs. One shows NULL dereference which can be
produced with the above steps, the other shows LIST_POISON dereference
which I can't reproduce (came from random monkeying).
Offending code is from ohci-q.c, function finish_unlinks, line 1086:
1082 if (list_empty(&ed->td_list)) {
1083 *last = ed->ed_next;
1084 ed->ed_next = NULL;
1085 ed->state = ED_IDLE;
1086 list_del(&ed->in_use_list);
1087 } else if (ohci->rh_state == OHCI_RH_RUNNING) {
1088 *last = ed->ed_next;
1089 ed->ed_next = NULL;
1090 ed_schedule(ohci, ed);
list_del fails because in_use_list's ->next and ->prev are NULL or
LIST_POISON (see registers RAX, RDX).
Not sure what's so special about ueagle-atm, but other USB 1.0 devices
(keyboards, mice, audio) work fine.
Log 1:
[ 58.787543] usb 5-5: new full-speed USB device number 3 using ohci-pci
[ 59.006343] usb 5-5: New USB device found, idVendor=1110, idProduct=9032
[ 59.086567] usb 5-5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 59.177810] NET: Registered protocol family 8
[ 59.230009] NET: Registered protocol family 20
[ 59.285627] usb 5-5: [ueagle-atm] ADSL device founded vid (0X1110) pid
(0X9032) Rev (0X2000): Eagle III
[ 59.520541] usb 5-5: reset full-speed USB device number 3 using ohci-pci
[ 59.741335] usb 5-5: [ueagle-atm] pre-firmware device, uploading firmware
[ 59.822563] usb 5-5: [ueagle-atm] loading firmware ueagle-atm/eagleIII.fw
[ 59.903836] usbcore: registered new interface driver ueagle-atm
[ 61.169321] usb 5-5: [ueagle-atm] firmware uploaded
[ 61.191987] usb 5-5: USB disconnect, device number 3
[ 63.551534] usb 5-5: new full-speed USB device number 4 using ohci-pci
[ 63.776306] usb 5-5: New USB device found, idVendor=1110, idProduct=9031
[ 63.856494] usb 5-5: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[ 63.941882] usb 5-5: Product: ADSL-USB Modem
[ 63.992947] usb 5-5: SerialNumber: 00604C8D86AA
[ 64.098336] usb 5-5: [ueagle-atm] ADSL device founded vid (0X1110) pid
(0X9031) Rev (0X200B): Eagle III
[ 64.333538] usb 5-5: reset full-speed USB device number 4 using ohci-pci
[ 64.612298] usb 5-5: [ueagle-atm] using iso mode
[ 64.668301] ATM dev 0: usbatm_submit_urb: urb 0xffff8807f1568b00 submission
failed (-28)!
[ 64.766206] usb 5-5: [ueagle-atm] (re)booting started
[ 66.518285] usb 5-5: [ueagle-atm] ATU-R firmware version : 44e2ea17
[ 66.593362] usb 5-5: Direct firmware load for ueagle-atm/CMVep.bin.v2 failed
with error -2
[ 66.692352] usb 5-5: [Ueagle-atm] requesting firmware
ueagle-atm/CMVep.bin.v2 failed, try to get older cmvs
[ 66.809162] usb 5-5: [Ueagle-atm] use deprecated cmvs version, please update
your firmware
[ 66.948277] usb 5-5: [ueagle-atm] modem started, waiting synchronization...
[ 81.713955] usb 5-5: USB disconnect, device number 4
[ 81.717161] usb 5-5: [UEAGLE-ATM] uea_intr() failed with -62
[ 81.841145] ATM dev 0: usbatm_complete: urb 0xffff8807f1568b00 failed (-2)!
[ 81.925151] ATM dev 0: usbatm_complete: urb 0xffff8807f1568000 failed (-2)!
[ 82.009150] ATM dev 0: usbatm_complete: urb 0xffff8807f1568500 failed (-2)!
[ 82.092484] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 82.159210] usb 5-5: [UEAGLE-ATM] reading cmv failed with error -19
[ 82.160190] ATM dev 0: usbatm_complete: urb 0xffff8807f1568900 failed (-2)!
[ 82.160197] BUG: unable to handle kernel NULL pointer dereference at
0000000000000008
[ 82.160202] IP: [<ffffffff816c8c07>] ohci_work.part.6+0x2a7/0x5a0
[ 82.160202] PGD 0
[ 82.160204] Oops: 0002 [#1] PREEMPT SMP
[ 82.160207] Modules linked in: ueagle_atm usbatm atm 8021q ext2 atkbd
snd_pcsp serio_raw asus_atk0110
[ 82.160209] CPU: 4 PID: 0 Comm: swapper/4 Not tainted 4.4.11+ #44
[ 82.160210] Hardware name: System manufacturer System Product Name/M4A88TD-M
EVO, BIOS 1801 08/09/2012
[ 82.160210] task: ffff8807fc2e0a00 ti: ffff8807fc2f0000 task.ti:
ffff8807fc2f0000
[ 82.160212] RIP: 0010:[<ffffffff816c8c07>] [<ffffffff816c8c07>]
ohci_work.part.6+0x2a7/0x5a0
[ 82.160213] RSP: 0018:ffff88081fd03e18 EFLAGS: 00010046
[ 82.160214] RAX: 0000000000000000 RBX: ffff8800df8411f0 RCX: ffffffff81edd6f8
[ 82.160214] RDX: 0000000000000000 RSI: ffff8800df8411f0 RDI: ffff8807faa29a40
[ 82.160215] RBP: ffff88081fd03e78 R08: 0000000000000000 R09: 000000000000003f
[ 82.160215] R10: 0000000000000001 R11: 0000000000080000 R12: ffff8807f1568900
[ 82.160216] R13: ffff8800df8411f0 R14: ffff8800df8411c0 R15: ffff8800df8411c8
[ 82.160216] FS: 00007f65a9174940(0000) GS:ffff88081fd00000(0000)
knlGS:0000000000000000
[ 82.160217] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 82.160218] CR2: 0000000000000008 CR3: 0000000001e0a000 CR4: 00000000000006e0
[ 82.160218] Stack:
[ 82.160219] ffff8807faa29a60 ffff8800df8411c8 d71bffff810e3600
ffff8807faa29a40
[ 82.160220] ffff8807faa29a60 0000000100000001 ffff8800df8411c0
ffff8807faa29800
[ 82.160221] 0000000000000004 ffffc90000076000 ffff8807faa29a40
0000000000000000
[ 82.160221] Call Trace:
[ 82.160224] <IRQ>
[ 82.160224] [<ffffffff816cc6ad>] ohci_irq+0x1ed/0x270
[ 82.160226] [<ffffffff816a6bd5>] usb_hcd_irq+0x25/0x40
[ 82.160228] [<ffffffff810d243c>] handle_irq_event_percpu+0x4c/0x1f0
[ 82.160230] [<ffffffff810d2620>] handle_irq_event+0x40/0x70
[ 82.160232] [<ffffffff810d57e8>] handle_fasteoi_irq+0x98/0x150
[ 82.160233] [<ffffffff8104eeca>] handle_irq+0x1a/0x30
[ 82.160235] [<ffffffff818ade1a>] do_IRQ+0x5a/0xf0
[ 82.160236] [<ffffffff818ac43c>] common_interrupt+0x7c/0x7c
[ 82.160239] <EOI>
[ 82.160239] [<ffffffff8172ecda>] ? cpuidle_enter_state+0x11a/0x2b0
[ 82.160240] [<ffffffff8172eea7>] cpuidle_enter+0x17/0x20
[ 82.160242] [<ffffffff810c1da2>] call_cpuidle+0x32/0x60
[ 82.160242] [<ffffffff8172ee83>] ? cpuidle_select+0x13/0x20
[ 82.160244] [<ffffffff810c2046>] cpu_startup_entry+0x276/0x360
[ 82.160245] [<ffffffff8106c9e3>] start_secondary+0xf3/0x100
[ 82.160255] Code: 39 de 0f 85 2d ff ff ff 49 89 c6 49 8b 46 20 48 8b 55 c0
48 89 02 49 8b 46 48 49 8b 56 40 49 c7 46 20 00 00 00 00 41 c6 46 50 00 <48> 89
42 08 48 89 10 48 b8 00 01 00 00 00 00 ad de 49 89 46 40
[ 82.160257] RIP [<ffffffff816c8c07>] ohci_work.part.6+0x2a7/0x5a0
[ 82.160257] RSP <ffff88081fd03e18>
[ 82.160257] CR2: 0000000000000008
[ 82.170281] ---[ end trace 3535fcd0a1cd21cc ]---
[ 82.170282] Kernel panic - not syncing: Fatal exception in interrupt
[ 82.234180] Kernel Offset: disabled
[ 85.642960] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
Log 2:
[ 143.404546] usb 5-5: [ueagle-atm] modem started, waiting synchronization...
[ 171.401500] usb 5-5: USB disconnect, device number 6
[ 171.404305] usbatm_submit_urb: 1 callbacks suppressed
[ 171.404307] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 171.405294] usb 5-5: [UEAGLE-ATM] uea_intr() failed with -62
[ 171.407303] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 171.410303] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 171.413342] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 171.517262] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 171.517263] usb 5-5: [UEAGLE-ATM] reading cmv failed with error -19
[ 171.521387] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 171.686955] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 171.882699] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 172.122229] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 172.415834] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 172.516829] usb 5-5: [ueagle-atm] (re)booting started
[ 172.516831] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.516832] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.516833] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.616778] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.616780] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.616781] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.616781] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 172.672003] ATM dev 0: usbatm_submit_urb: urb 0xffff8807fa037600 submission
failed (-19)!
[ 173.236610] usb 5-5: [UEAGLE-ATM] usb_control_msg error -19
[ 173.303374] usb 5-5: [ueagle-atm] ADSL device removed
[ 215.107044] general protection fault: 0000 [#1] PREEMPT SMP
[ 215.175100] Modules linked in: ueagle_atm usbatm atm 8021q ext2 atkbd
snd_pcsp serio_raw asus_atk0110
[ 215.286491] CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.4.11+ #44
[ 215.359399] Hardware name: System manufacturer System Product Name/M4A88TD-M
EVO, BIOS 1801 08/09/2012
[ 215.473910] task: ffff8807fc2e1400 ti: ffff8807fc2f4000 task.ti:
ffff8807fc2f4000
[ 215.563460] RIP: 0010:[<ffffffff816c8c07>] [<ffffffff816c8c07>]
ohci_work.part.6+0x2a7/0x5a0
[ 215.665594] RSP: 0018:ffff88081fd43e18 EFLAGS: 00010046
[ 215.729142] RAX: dead000000000200 RBX: ffff8800df82d0a0 RCX: ffffffff81edd6f8
[ 215.814532] RDX: dead000000000100 RSI: ffff8800df82d0a0 RDI: ffff8807faa1c240
[ 215.899921] RBP: ffff88081fd43e78 R08: 0000000000000000 R09: 0000000000000010
[ 215.985310] R10: ffff8807fa0cd800 R11: 0000000000000004 R12: ffff8807fabd16c0
[ 216.070700] R13: ffff8800df82d0a0 R14: ffff8800df82d070 R15: ffff8800df82d078
[ 216.156090] FS: 00007facce5e1700(0000) GS:ffff88081fd40000(0000)
knlGS:0000000000000000
[ 216.252918] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 216.321668] CR2: 00007fba4be16b40 CR3: 00000007f7a29000 CR4: 00000000000006e0
[ 216.407055] Stack:
[ 216.431082] ffff8807faa1c260 ffff8800df82d078 3d5b88081fd43e50
ffff8807faa1c240
[ 216.520007] ffff8807faa1c260 0000000100000001 ffff8800df82d070
ffff8807faa1c000
[ 216.608933] 0000000000000004 ffffc90000064000 ffff8807faa1c240
0000000000000000
[ 216.697859] Call Trace:
[ 216.727086] <IRQ>
[ 216.750072] [<ffffffff816cc6ad>] ohci_irq+0x1ed/0x270
[ 216.813725] [<ffffffff816a6bd5>] usb_hcd_irq+0x25/0x40
[ 216.813728] [<ffffffff810d243c>] handle_irq_event_percpu+0x4c/0x1f0
[ 216.813729] [<ffffffff810d2620>] handle_irq_event+0x40/0x70
[ 216.813731] [<ffffffff810d57e8>] handle_fasteoi_irq+0x98/0x150
[ 216.813734] [<ffffffff8104eeca>] handle_irq+0x1a/0x30
[ 216.813736] [<ffffffff818ade1a>] do_IRQ+0x5a/0xf0
[ 216.813738] [<ffffffff818ac43c>] common_interrupt+0x7c/0x7c
[ 216.813740] <EOI>
[ 216.813740] [<ffffffff8172ecda>] ? cpuidle_enter_state+0x11a/0x2b0
[ 216.813741] [<ffffffff8172eea7>] cpuidle_enter+0x17/0x20
[ 216.813743] [<ffffffff810c1da2>] call_cpuidle+0x32/0x60
[ 216.813743] [<ffffffff8172ee83>] ? cpuidle_select+0x13/0x20
[ 216.813744] [<ffffffff810c2046>] cpu_startup_entry+0x276/0x360
[ 216.813746] [<ffffffff8106c9e3>] start_secondary+0xf3/0x100
[ 216.813756] Code: 39 de 0f 85 2d ff ff ff 49 89 c6 49 8b 46 20 48 8b 55 c0
48 89 02 49 8b 46 48 49 8b 56 40 49 c7 46 20 00 00 00 00 41 c6 46 50 00 <48> 89
42 08 48 89 10 48 b8 00 01 00 00 00 00 ad de 49 89 46 40
[ 216.813758] RIP [<ffffffff816c8c07>] ohci_work.part.6+0x2a7/0x5a0
[ 216.813758] RSP <ffff88081fd43e18>
[ 216.823769] ---[ end trace 97aa62091fdf89db ]---
[ 216.823770] Kernel panic - not syncing: Fatal exception in interrupt
[ 216.876231] Kernel Offset: disabled
[ 218.226129] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html