================================================================== BUG: KASAN: use-after-free in mcp2221_raw_event+0x103c/0x10a0 drivers/hid/hid-mcp2221.c:948 Read of size 1 at addr ffff8881496fbfff by task kworker/1:5/24618 CPU: 1 UID: 0 PID: 24618 Comm: kworker/1:5 Not tainted syzkaller #0 PREEMPT(voluntary) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/24/2026 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:__mutex_trylock_common kernel/locking/mutex.c:88 [inline] RIP: 0010:__mutex_trylock kernel/locking/mutex.c:133 [inline] RIP: 0010:__mutex_lock_common kernel/locking/mutex.c:617 [inline] RIP: 0010:__mutex_lock+0x1ee/0x1b90 kernel/locking/mutex.c:776 Code: 8b 3d 5e 4c 76 05 e8 51 1d be fa 48 89 da 59 48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 80 3c 02 00 0f 85 8c 16 00 00 48 8b 03 <48> 89 85 20 ff ff ff 4c 8b a5 20 ff ff ff 4c 89 e0 48 83 e0 f8 0f RSP: 0018:ffffc900022f66f0 EFLAGS: 00000246 RAX: 0000000000000000 RBX: ffffffff89656900 RCX: ffffffff81f7a9fa RDX: 1ffffffff12cad20 RSI: 0000000000000008 RDI: ffffffff89656900 RBP: ffffc900022f6870 R08: 0000000000000000 R09: fffffbfff12cad20 R10: ffffffff89656907 R11: 0000000000000000 R12: 0000000000000000 R13: 0000000000000000 R14: dffffc0000000000 R15: ffff8881202cd7c0 pcpu_alloc_noprof+0xd0a/0x18d0 mm/percpu.c:1782 init_srcu_struct_fields+0xa3a/0xe40 kernel/rcu/srcutree.c:256 gpiochip_add_data_with_key+0x665/0x39e0 drivers/gpio/gpiolib.c:1109 devm_gpiochip_add_data_with_key+0x31/0x90 drivers/gpio/gpiolib-devres.c:356 mcp2221_probe.cold+0x8f1/0xab3 drivers/hid/hid-mcp2221.c:1312 __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 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 hid_add_device+0x2bf/0x440 drivers/hid/hid-core.c:2951 usbhid_probe+0xd57/0x1350 drivers/hid/usbhid/hid-core.c:1450 usb_probe_interface+0x303/0x8f0 drivers/usb/core/driver.c:396 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 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 usb_set_configuration+0xd97/0x1c60 drivers/usb/core/message.c:2210 usb_generic_driver_probe+0xa1/0xe0 drivers/usb/core/generic.c:250 usb_probe_device+0xef/0x400 drivers/usb/core/driver.c:291 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 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 usb_new_device.cold+0x685/0x115c drivers/usb/core/hub.c:2695 hub_port_connect drivers/usb/core/hub.c:5567 [inline] hub_port_connect_change drivers/usb/core/hub.c:5707 [inline] port_event drivers/usb/core/hub.c:5871 [inline] hub_event+0x314d/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:0xffff888100000000 pfn:0x1496fb flags: 0x200000000000000(node=0|zone=2) page_type: f0(buddy) raw: 0200000000000000 ffffea0004c3d288 ffffea00046ae588 0000000000000000 raw: ffff888100000000 0000000000000000 00000000f0000000 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 32663, tgid 32663 (syz-executor), ts 2882741082314, free_ts 2943273289441 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_user_noprof+0x9e/0xe0 mm/vmalloc.c:4205 kcov_ioctl+0x4c/0x720 kernel/kcov.c:716 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:597 [inline] __se_sys_ioctl fs/ioctl.c:583 [inline] __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xc9/0x570 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f page last free pid 11668 tgid 11668 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: ffff8881496fbe80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff8881496fbf00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >ffff8881496fbf80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff8881496fc000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8881496fc080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ================================================================== ---------------- Code disassembly (best guess): 0: 8b 3d 5e 4c 76 05 mov 0x5764c5e(%rip),%edi # 0x5764c64 6: e8 51 1d be fa call 0xfabe1d5c b: 48 89 da mov %rbx,%rdx e: 59 pop %rcx f: 48 b8 00 00 00 00 00 movabs $0xdffffc0000000000,%rax 16: fc ff df 19: 48 c1 ea 03 shr $0x3,%rdx 1d: 80 3c 02 00 cmpb $0x0,(%rdx,%rax,1) 21: 0f 85 8c 16 00 00 jne 0x16b3 27: 48 8b 03 mov (%rbx),%rax * 2a: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) <-- trapping instruction 31: 4c 8b a5 20 ff ff ff mov -0xe0(%rbp),%r12 38: 4c 89 e0 mov %r12,%rax 3b: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 3f: 0f .byte 0xf