The patch usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB https://patches.linaro.org/project/linux-usb/patch/20240429140245.3955523-11-mathias.nyman@xxxxxxxxxxxxxxx/ causes The Linux kernel 6.1.98 https://lkml.org/lkml/2024/7/9/645 to crash when plugging in a USB Seagate drive. https://www.seagate.com/ca/en/products/gaming-drives/pc-gaming/firecuda-gaming-hub/ This is a regression. Behavior of 6.1.98: ============================================================================== scsi host1: uas_eh_device_reset_handler start rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: rcu: 0-...!: (1 GPs behind) idle=686c/0/0x1 softirq=1841/1841 fqs=610 (detected by 4, t=5253 jiffies, g=2269, q=225 ncpus=6) Task dump for CPU 0: task:swapper/0 state:R running task stack:0 pid:0 ppid:0 flags:0x0000000 8 Call trace: __switch_to+0xe4/0x160 0xd7f8f808 rcu: rcu_preempt kthread timer wakeup didn't happen for 4037 jiffies! g2269 f0x0 RCU_GP_WAIT_FQS (5) ->state=0x402 rcu: Possible timer handling issue on cpu=5 timer-softirq=1141 rcu: rcu_preempt kthread starved for 4043 jiffies! g2269 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 - >cpu=5 rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior. rcu: RCU grace-period kthread stack dump: task:rcu_preempt state:I stack:0 pid:14 ppid:2 flags:0x00000008 Call trace: __switch_to+0xe4/0x160 __schedule+0x28c/0x710 schedule+0x5c/0xd0 schedule_timeout+0x8c/0x100 rcu_gp_fqs_loop+0x140/0x4a0 rcu_gp_kthread+0x13c/0x170 kthread+0x108/0x10c ret_from_fork+0x10/0x20 rcu: Stack dump where RCU GP kthread last ran: Task dump for CPU 5: task:kworker/5:1 state:R running task stack:0 pid:89 ppid:2 flags:0x0000000 8 Workqueue: events xhci_handle_command_timeout Call trace: __switch_to+0xe4/0x160 0x0 Behavior of 6.1.97 (or 6.1.978 with the patch reverted): ============================================================================== scsi host1: uas_eh_device_reset_handler start usb 2-1.4.2.1: reset SuperSpeed USB device number 6 using xhci-hcd scsi host1: uas_eh_device_reset_handler success sd 1:0:0:0:31251759103 512-byte logical blocks: (16.0 TB/14.6 TiB) sd 1:0:0:0:Write Protect is off sd 1:0:0:0:Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sd 1:0:0:0:Preferred minimum I/O size 512 bytes sd 1:0:0:0:Optimal transfer size 33553920 bytes sdb: sdb1 sd 1:0:0:0:Attached SCSI disk sd 0:0:0:0:tag#6 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN sd 0:0:0:0:tag#6 CDB: opcode=0x9e, sa=0x10 9e 10 00 00 00 00 00 00 00 00 00 00 00 20 00 0 0 scsi host0: uas_eh_device_reset_handler start usb 2-1.4.1: reset SuperSpeed USB device number 5 using xhci-hcd scsi host0: uas_eh_device_reset_handler success sd 0:0:0:0:31251759103 512-byte logical blocks: (16.0 TB/14.6 TiB) sd 0:0:0:0:Write Protect is off sd 0:0:0:0:Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sd 0:0:0:0:Preferred minimum I/O size 512 bytes sd 0:0:0:0:Optimal transfer size 33553920 bytes sda: sda1 sd 0:0:0:0:Attached SCSI disk