================================================================== 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