UBSAN: array-index-out-of-bounds in steelseries_remove

Status: premoderation: reported C repro on 2026/06/08 15:56
Reported-by: syzbot+aa2517aaa552688c27e8@syzkaller.appspotmail.com
First crash: 104d, last: 1d14h
Similar bugs (1)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-6.6 KASAN: slab-out-of-bounds Read in steelseries_remove 17 syz, C 9 1d02h 18d 0/2 upstream: reported C repro on 2026/09/02 23:17

Sample crash report:
usb 1-1: USB disconnect, device number 2
------------[ cut here ]------------
UBSAN: array-index-out-of-bounds in kernel/locking/qspinlock.c:131:9
index 1633 is out of range for type 'unsigned long[8]'
CPU: 0 UID: 0 PID: 10 Comm: kworker/0:1 Not tainted syzkaller #0 249ace596eef83e7ab94f4ef92c49a820648daf1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
Workqueue: usb_hub_wq hub_event
Call Trace:
 <TASK>
 __dump_stack+0x21/0x30 lib/dump_stack.c:94
 dump_stack_lvl+0x140/0x1c0 lib/dump_stack.c:120
 dump_stack+0x19/0x20 lib/dump_stack.c:129
 ubsan_epilogue+0xe/0x40 lib/ubsan.c:231
 __ubsan_handle_out_of_bounds+0xe8/0xf0 lib/ubsan.c:429
 decode_tail kernel/locking/qspinlock.c:131 [inline]
 __pv_queued_spin_lock_slowpath+0xbf7/0xe90 kernel/locking/qspinlock.c:468
 pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:584 [inline]
 queued_spin_lock_slowpath arch/x86/include/asm/qspinlock.h:51 [inline]
 queued_spin_lock include/asm-generic/qspinlock.h:114 [inline]
 do_raw_spin_lock include/linux/spinlock.h:187 [inline]
 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline]
 _raw_spin_lock_irqsave+0x153/0x160 kernel/locking/spinlock.c:162
 steelseries_remove+0x85/0x180 drivers/hid/hid-steelseries.c:564
 hid_device_remove+0x293/0x400 drivers/hid/hid-core.c:-1
 device_remove drivers/base/dd.c:567 [inline]
 __device_release_driver drivers/base/dd.c:1272 [inline]
 device_release_driver_internal+0x4aa/0x830 drivers/base/dd.c:1295
 device_release_driver+0x1d/0x30 drivers/base/dd.c:1318
 bus_remove_device+0x34f/0x370 drivers/base/bus.c:576
 device_del+0x583/0xcf0 drivers/base/core.c:3881
 hid_remove_device drivers/hid/hid-core.c:3000 [inline]
 hid_destroy_device+0x6e/0x110 drivers/hid/hid-core.c:3020
 usbhid_disconnect+0xa3/0xc0 drivers/hid/usbhid/hid-core.c:1478
 usb_unbind_interface+0x2ad/0xa40 drivers/usb/core/driver.c:462
 device_remove drivers/base/dd.c:569 [inline]
 __device_release_driver drivers/base/dd.c:1272 [inline]
 device_release_driver_internal+0x522/0x830 drivers/base/dd.c:1295
 device_release_driver+0x1d/0x30 drivers/base/dd.c:1318
 bus_remove_device+0x34f/0x370 drivers/base/bus.c:576
 device_del+0x583/0xcf0 drivers/base/core.c:3881
 usb_disable_device+0x3af/0x770 drivers/usb/core/message.c:1476
 usb_disconnect+0x331/0x950 drivers/usb/core/hub.c:2353
 hub_port_connect drivers/usb/core/hub.c:5414 [inline]
 hub_port_connect_change drivers/usb/core/hub.c:5714 [inline]
 port_event drivers/usb/core/hub.c:5878 [inline]
 hub_event+0x1ad5/0x4360 drivers/usb/core/hub.c:5960
 process_one_work kernel/workqueue.c:3273 [inline]
 process_scheduled_works+0x7f4/0x1060 kernel/workqueue.c:3354
 worker_thread+0xc99/0x13f0 kernel/workqueue.c:3435
 kthread+0x2c4/0x360 kernel/kthread.c:389
 ret_from_fork+0x64/0xa0 arch/x86/kernel/process.c:153
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>
---[ end trace ]---
==================================================================
BUG: KASAN: global-out-of-bounds in pv_wait_early kernel/locking/qspinlock_paravirt.h:269 [inline]
BUG: KASAN: global-out-of-bounds in pv_wait_node kernel/locking/qspinlock_paravirt.h:301 [inline]
BUG: KASAN: global-out-of-bounds in __pv_queued_spin_lock_slowpath+0x558/0xe90 kernel/locking/qspinlock.c:473
Read of size 1 at addr ffffffff88c6a054 by task kworker/0:1/10

CPU: 0 UID: 0 PID: 10 Comm: kworker/0:1 Not tainted syzkaller #0 249ace596eef83e7ab94f4ef92c49a820648daf1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
Workqueue: usb_hub_wq hub_event
Call Trace:
 <TASK>
 __dump_stack+0x21/0x30 lib/dump_stack.c:94
 dump_stack_lvl+0x140/0x1c0 lib/dump_stack.c:120
 print_address_description+0x71/0x210 mm/kasan/report.c:377
 print_report+0x4a/0x70 mm/kasan/report.c:481
 kasan_report+0x162/0x1a0 mm/kasan/report.c:594
 __asan_report_load1_noabort+0x18/0x20 mm/kasan/report_generic.c:378
 pv_wait_early kernel/locking/qspinlock_paravirt.h:269 [inline]
 pv_wait_node kernel/locking/qspinlock_paravirt.h:301 [inline]
 __pv_queued_spin_lock_slowpath+0x558/0xe90 kernel/locking/qspinlock.c:473
 pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:584 [inline]
 queued_spin_lock_slowpath arch/x86/include/asm/qspinlock.h:51 [inline]
 queued_spin_lock include/asm-generic/qspinlock.h:114 [inline]
 do_raw_spin_lock include/linux/spinlock.h:187 [inline]
 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline]
 _raw_spin_lock_irqsave+0x153/0x160 kernel/locking/spinlock.c:162
 steelseries_remove+0x85/0x180 drivers/hid/hid-steelseries.c:564
 hid_device_remove+0x293/0x400 drivers/hid/hid-core.c:-1
 device_remove drivers/base/dd.c:567 [inline]
 __device_release_driver drivers/base/dd.c:1272 [inline]
 device_release_driver_internal+0x4aa/0x830 drivers/base/dd.c:1295
 device_release_driver+0x1d/0x30 drivers/base/dd.c:1318
 bus_remove_device+0x34f/0x370 drivers/base/bus.c:576
 device_del+0x583/0xcf0 drivers/base/core.c:3881
 hid_remove_device drivers/hid/hid-core.c:3000 [inline]
 hid_destroy_device+0x6e/0x110 drivers/hid/hid-core.c:3020
 usbhid_disconnect+0xa3/0xc0 drivers/hid/usbhid/hid-core.c:1478
 usb_unbind_interface+0x2ad/0xa40 drivers/usb/core/driver.c:462
 device_remove drivers/base/dd.c:569 [inline]
 __device_release_driver drivers/base/dd.c:1272 [inline]
 device_release_driver_internal+0x522/0x830 drivers/base/dd.c:1295
 device_release_driver+0x1d/0x30 drivers/base/dd.c:1318
 bus_remove_device+0x34f/0x370 drivers/base/bus.c:576
 device_del+0x583/0xcf0 drivers/base/core.c:3881
 usb_disable_device+0x3af/0x770 drivers/usb/core/message.c:1476
 usb_disconnect+0x331/0x950 drivers/usb/core/hub.c:2353
 hub_port_connect drivers/usb/core/hub.c:5414 [inline]
 hub_port_connect_change drivers/usb/core/hub.c:5714 [inline]
 port_event drivers/usb/core/hub.c:5878 [inline]
 hub_event+0x1ad5/0x4360 drivers/usb/core/hub.c:5960
 process_one_work kernel/workqueue.c:3273 [inline]
 process_scheduled_works+0x7f4/0x1060 kernel/workqueue.c:3354
 worker_thread+0xc99/0x13f0 kernel/workqueue.c:3435
 kthread+0x2c4/0x360 kernel/kthread.c:389
 ret_from_fork+0x64/0xa0 arch/x86/kernel/process.c:153
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>

The buggy address belongs to the variable:
 sst_gains+0x94/0xc0

The buggy address belongs to the physical page:
page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x8c6a
flags: 0x4000(reserved|zone=0)
raw: 0000000000004000 ffffea0000231a88 ffffea0000231a88 0000000000000000
raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner info is not present (never set?)

Memory state around the buggy address:
 ffffffff88c69f00: 00 00 00 00 00 f9 f9 f9 f9 f9 f9 f9 00 f9 f9 f9
 ffffffff88c69f80: f9 f9 f9 f9 04 f9 f9 f9 00 00 00 00 00 00 00 00
>ffffffff88c6a000: 00 00 00 00 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9
                                                 ^
 ffffffff88c6a080: 00 00 00 00 00 00 00 00 f9 f9 f9 f9 00 00 00 00
 ffffffff88c6a100: 00 00 00 00 f9 f9 f9 f9 00 00 00 00 00 00 00 00
==================================================================

Crashes (9):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/09/18 10:05 android16-6.12 17176090d7cd 853b104b .config strace log report syz / log C [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/02 15:52 android16-6.12 58b61a547e48 85995287 .config strace log report syz / log C [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/19 19:20 android16-6.12 dde7e9bf027f 853b104b .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/19 19:19 android16-6.12 dde7e9bf027f 853b104b .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/10 12:39 android16-6.12 89698cd757af 1fe56c0a .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/10 12:38 android16-6.12 89698cd757af 1fe56c0a .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/02 15:25 android16-6.12 58b61a547e48 85995287 .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/09/02 15:25 android16-6.12 58b61a547e48 85995287 .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
2026/06/08 15:55 android16-6.12 b31795d3d788 656e94c6 .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust UBSAN: array-index-out-of-bounds in steelseries_remove
* Struck through repros no longer work on HEAD.