==================================================================
BUG: KASAN: use-after-free in mcp2221_raw_event+0x103c/0x10a0 drivers/hid/hid-mcp2221.c:948
Read of size 1 at addr ffff88811db6bfff by task kworker/1:1/38
CPU: 1 UID: 0 PID: 38 Comm: kworker/1:1 Not tainted syzkaller #0 PREEMPT(voluntary)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
Workqueue: usb_hub_wq hub_event
Call Trace:
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x100/0x190 lib/dump_stack.c:120
print_address_description mm/kasan/report.c:378 [inline]
print_report+0x156/0x4c9 mm/kasan/report.c:482
kasan_report+0xdf/0x1a0 mm/kasan/report.c:595
mcp2221_raw_event+0x103c/0x10a0 drivers/hid/hid-mcp2221.c:948
__hid_input_report.constprop.0+0x314/0x460 drivers/hid/hid-core.c:2139
hid_irq_in+0x52e/0x6b0 drivers/hid/usbhid/hid-core.c:286
__usb_hcd_giveback_urb+0x38d/0x610 drivers/usb/core/hcd.c:1657
usb_hcd_giveback_urb+0x3ca/0x4a0 drivers/usb/core/hcd.c:1741
dummy_timer+0xd85/0x3670 drivers/usb/gadget/udc/dummy_hcd.c:1995
__run_hrtimer kernel/time/hrtimer.c:1777 [inline]
__hrtimer_run_queues+0x516/0x990 kernel/time/hrtimer.c:1841
hrtimer_run_softirq+0x17d/0x350 kernel/time/hrtimer.c:1858
handle_softirqs+0x1dd/0x8f0 kernel/softirq.c:622
__do_softirq kernel/softirq.c:656 [inline]
invoke_softirq kernel/softirq.c:496 [inline]
__irq_exit_rcu+0xed/0x150 kernel/softirq.c:723
irq_exit_rcu+0x9/0x30 kernel/softirq.c:739
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1056 [inline]
sysvec_apic_timer_interrupt+0x8f/0xb0 arch/x86/kernel/apic/apic.c:1056
asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:697
RIP: 0010:finish_task_switch.isra.0+0x160/0x700 kernel/sched/core.c:5118
Code: 8d 7b 18 31 f6 e8 20 d0 0a 00 31 f6 48 89 df e8 d6 f9 ff ff 48 89 df e8 1e c3 d2 05 e8 09 be 35 00 fb 49 8d bc 24 40 15 00 00 <48> b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 0f b6 04 02 5a
RSP: 0018:ffffc900002874f8 EFLAGS: 00000206
RAX: 00000000003ac8c5 RBX: ffff8881f57390c0 RCX: 0000000000000040
RDX: 0000000000000000 RSI: ffffffff88dec75e RDI: ffff888103abb280
RBP: ffffc90000287540 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888103ab9d40
R13: ffff888135819d40 R14: 0000000000000000 R15: 0000000000002001
context_switch kernel/sched/core.c:5263 [inline]
__schedule+0xeb8/0x3e50 kernel/sched/core.c:6867
preempt_schedule_common+0x42/0xc0 kernel/sched/core.c:7051
__cond_resched+0x22/0x30 kernel/sched/core.c:7378
might_resched include/linux/kernel.h:61 [inline]
down_write+0x6f/0x1f0 kernel/locking/rwsem.c:1589
kernfs_unlink_sibling+0xa3/0x320 fs/kernfs/dir.c:424
__kernfs_remove+0x300/0x900 fs/kernfs/dir.c:1519
kernfs_remove fs/kernfs/dir.c:1555 [inline]
kernfs_remove+0x37/0x50 fs/kernfs/dir.c:1545
sysfs_remove_dir+0xc8/0x110 fs/sysfs/dir.c:101
__kobject_del+0xe2/0x220 lib/kobject.c:604
kobject_del lib/kobject.c:627 [inline]
kobject_del+0x3f/0x60 lib/kobject.c:619
device_del+0x630/0x9b0 drivers/base/core.c:3898
usb_disable_device+0x367/0x810 drivers/usb/core/message.c:1418
usb_disconnect+0x2e2/0x9a0 drivers/usb/core/hub.c:2345
hub_port_connect drivers/usb/core/hub.c:5407 [inline]
hub_port_connect_change drivers/usb/core/hub.c:5707 [inline]
port_event drivers/usb/core/hub.c:5871 [inline]
hub_event+0x1d0c/0x4af0 drivers/usb/core/hub.c:5953
process_one_work+0x9c2/0x1840 kernel/workqueue.c:3257
process_scheduled_works kernel/workqueue.c:3340 [inline]
worker_thread+0x5da/0xe40 kernel/workqueue.c:3421
kthread+0x3b3/0x730 kernel/kthread.c:463
ret_from_fork+0x6c3/0xa20 arch/x86/kernel/process.c:158
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246
The buggy address belongs to the physical page:
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x11db6b
flags: 0x200000000000000(node=0|zone=2)
raw: 0200000000000000 dead000000000100 dead000000000122 0000000000000000
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as freed
page last allocated via order 0, migratetype Unmovable, gfp_mask 0xcc0(GFP_KERNEL), pid 10752, tgid 10752 (kworker/0:7), ts 2432813795818, free_ts 2489460170541
set_page_owner include/linux/page_owner.h:32 [inline]
post_alloc_hook+0x1e1/0x250 mm/page_alloc.c:1884
prep_new_page mm/page_alloc.c:1892 [inline]
get_page_from_freelist+0xd57/0x3b20 mm/page_alloc.c:3945
__alloc_frozen_pages_noprof+0x269/0x2230 mm/page_alloc.c:5240
__alloc_pages_noprof mm/page_alloc.c:5274 [inline]
alloc_pages_bulk_noprof+0x73f/0x12c0 mm/page_alloc.c:5194
___alloc_pages_bulk mm/kasan/shadow.c:345 [inline]
__kasan_populate_vmalloc_do mm/kasan/shadow.c:370 [inline]
__kasan_populate_vmalloc+0xf0/0x210 mm/kasan/shadow.c:424
kasan_populate_vmalloc include/linux/kasan.h:580 [inline]
alloc_vmap_area+0x935/0x2a00 mm/vmalloc.c:2124
__get_vm_area_node+0x1ca/0x330 mm/vmalloc.c:3219
__vmalloc_node_range_noprof+0x213/0x1530 mm/vmalloc.c:4011
__vmalloc_node_noprof+0xad/0xf0 mm/vmalloc.c:4111
hid_open_report+0x2a0/0x770 drivers/hid/hid-core.c:1312
hid_parse include/linux/hid.h:1165 [inline]
ms_probe+0x12d/0x4c0 drivers/hid/hid-microsoft.c:385
__hid_device_probe drivers/hid/hid-core.c:2775 [inline]
hid_device_probe+0x50e/0x800 drivers/hid/hid-core.c:2812
call_driver_probe drivers/base/dd.c:581 [inline]
really_probe+0x241/0xa60 drivers/base/dd.c:659
__driver_probe_device+0x1de/0x400 drivers/base/dd.c:801
driver_probe_device+0x4c/0x1b0 drivers/base/dd.c:831
__device_attach_driver+0x1df/0x340 drivers/base/dd.c:959
page last free pid 5296 tgid 5296 stack trace:
reset_page_owner include/linux/page_owner.h:25 [inline]
free_pages_prepare mm/page_alloc.c:1433 [inline]
__free_frozen_pages+0x7d1/0x1010 mm/page_alloc.c:2973
kasan_depopulate_vmalloc_pte+0x5d/0x80 mm/kasan/shadow.c:484
apply_to_pte_range mm/memory.c:3182 [inline]
apply_to_pmd_range mm/memory.c:3226 [inline]
apply_to_pud_range mm/memory.c:3262 [inline]
apply_to_p4d_range mm/memory.c:3298 [inline]
__apply_to_page_range+0xb1d/0x1520 mm/memory.c:3334
__kasan_release_vmalloc+0xd7/0xe0 mm/kasan/shadow.c:602
kasan_release_vmalloc include/linux/kasan.h:593 [inline]
kasan_release_vmalloc_node mm/vmalloc.c:2282 [inline]
purge_vmap_node+0x1c6/0xaa0 mm/vmalloc.c:2299
__purge_vmap_area_lazy+0x8e5/0xbc0 mm/vmalloc.c:2389
drain_vmap_area_work+0x27/0x40 mm/vmalloc.c:2423
process_one_work+0x9c2/0x1840 kernel/workqueue.c:3257
process_scheduled_works kernel/workqueue.c:3340 [inline]
worker_thread+0x5da/0xe40 kernel/workqueue.c:3421
kthread+0x3b3/0x730 kernel/kthread.c:463
ret_from_fork+0x6c3/0xa20 arch/x86/kernel/process.c:158
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246
Memory state around the buggy address:
ffff88811db6be80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff88811db6bf00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>ffff88811db6bf80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
^
ffff88811db6c000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff88811db6c080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================
----------------
Code disassembly (best guess):
0: 8d 7b 18 lea 0x18(%rbx),%edi
3: 31 f6 xor %esi,%esi
5: e8 20 d0 0a 00 call 0xad02a
a: 31 f6 xor %esi,%esi
c: 48 89 df mov %rbx,%rdi
f: e8 d6 f9 ff ff call 0xfffff9ea
14: 48 89 df mov %rbx,%rdi
17: e8 1e c3 d2 05 call 0x5d2c33a
1c: e8 09 be 35 00 call 0x35be2a
21: fb sti
22: 49 8d bc 24 40 15 00 lea 0x1540(%r12),%rdi
29: 00
* 2a: 48 b8 00 00 00 00 00 movabs $0xdffffc0000000000,%rax <-- trapping instruction
31: fc ff df
34: 48 89 fa mov %rdi,%rdx
37: 48 c1 ea 03 shr $0x3,%rdx
3b: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax
3f: 5a pop %rdx