================================================================== BUG: KASAN: use-after-free in mcp2221_raw_event+0x106a/0x1240 drivers/hid/hid-mcp2221.c:950 Read of size 1 at addr ffff888034463fff by task kworker/1:8/6011 CPU: 1 UID: 0 PID: 6011 Comm: kworker/1:8 Tainted: G L syzkaller #0 PREEMPT(full) Tainted: [L]=SOFTLOCKUP Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/18/2026 Workqueue: usb_hub_wq hub_event Call Trace: dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xba/0x230 mm/kasan/report.c:482 kasan_report+0x117/0x150 mm/kasan/report.c:595 mcp2221_raw_event+0x106a/0x1240 drivers/hid/hid-mcp2221.c:950 __hid_input_report drivers/hid/hid-core.c:2140 [inline] hid_input_report+0x41d/0x580 drivers/hid/hid-core.c:2167 hid_irq_in+0x47e/0x6d0 drivers/hid/usbhid/hid-core.c:286 __usb_hcd_giveback_urb+0x376/0x540 drivers/usb/core/hcd.c:1657 dummy_timer+0xbbd/0x45d0 drivers/usb/gadget/udc/dummy_hcd.c:1995 __run_hrtimer kernel/time/hrtimer.c:1785 [inline] __hrtimer_run_queues+0x53a/0xcc0 kernel/time/hrtimer.c:1849 hrtimer_run_softirq+0x182/0x5a0 kernel/time/hrtimer.c:1866 handle_softirqs+0x22a/0x870 kernel/softirq.c:622 __do_softirq kernel/softirq.c:656 [inline] invoke_softirq kernel/softirq.c:496 [inline] __irq_exit_rcu+0x5f/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+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1056 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:697 RIP: 0010:unwind_next_frame+0x10e/0x23c0 include/linux/rcupdate.h:-1 Code: 1f 85 0e 00 75 1f c6 05 87 1f 85 0e 01 48 c7 c7 e0 a2 c9 8b be 54 03 00 00 48 c7 c2 20 a3 c9 8b e8 17 57 2b 00 4c 89 6c 24 78 <48> 89 5c 24 70 4d 8d 6e 50 4c 89 e8 48 c1 e8 03 48 89 44 24 38 80 RSP: 0018:ffffc900049ce078 EFLAGS: 00000202 RAX: 0000000000000001 RBX: ffffffff8190b6a8 RCX: 0000000080000001 RDX: 00000000a89d1756 RSI: ffffffff8c27d0e0 RDI: ffffffff8c27d0a0 RBP: dffffc0000000000 R08: ffffffff81767e95 R09: ffffffff8e75e5e0 R10: dffffc0000000000 R11: ffffffff81b0d0f0 R12: 1ffff92000939c29 R13: ffffc900049ce180 R14: ffffc900049ce148 R15: ffffffff81767e95 arch_stack_walk+0x11b/0x150 arch/x86/kernel/stacktrace.c:25 stack_trace_save+0xa9/0x100 kernel/stacktrace.c:122 kasan_save_stack mm/kasan/common.c:57 [inline] kasan_save_track+0x3e/0x80 mm/kasan/common.c:78 poison_kmalloc_redzone mm/kasan/common.c:398 [inline] __kasan_kmalloc+0x93/0xb0 mm/kasan/common.c:415 kasan_kmalloc include/linux/kasan.h:263 [inline] __kmalloc_cache_noprof+0x31c/0x660 mm/slub.c:5380 kmalloc_noprof include/linux/slab.h:950 [inline] kzalloc_noprof include/linux/slab.h:1188 [inline] device_private_init drivers/base/core.c:3536 [inline] device_add+0xbe/0xb70 drivers/base/core.c:3587 cdev_device_add+0x1d6/0x390 fs/char_dev.c:553 i2cdev_attach_adapter+0x2ed/0x510 drivers/i2c/i2c-dev.c:690 notifier_call_chain+0x1be/0x400 kernel/notifier.c:85 blocking_notifier_call_chain+0x6a/0x90 kernel/notifier.c:380 bus_notify+0x143/0x180 drivers/base/bus.c:1079 device_add+0x54d/0xb70 drivers/base/core.c:3671 i2c_register_adapter+0x51b/0x1180 drivers/i2c/i2c-core-base.c:1573 devm_i2c_add_adapter+0x1b/0x80 drivers/i2c/i2c-core-base.c:1845 mcp2221_probe+0x404/0x880 drivers/hid/hid-mcp2221.c:1291 __hid_device_probe drivers/hid/hid-core.c:2776 [inline] hid_device_probe+0x416/0x7a0 drivers/hid/hid-core.c:2813 call_driver_probe drivers/base/dd.c:-1 [inline] really_probe+0x267/0xaf0 drivers/base/dd.c:721 __driver_probe_device+0x18c/0x320 drivers/base/dd.c:863 driver_probe_device+0x4f/0x240 drivers/base/dd.c:893 __device_attach_driver+0x279/0x430 drivers/base/dd.c:1021 bus_for_each_drv+0x258/0x2f0 drivers/base/bus.c:500 __device_attach+0x2c5/0x450 drivers/base/dd.c:1093 device_initial_probe+0xa1/0xd0 drivers/base/dd.c:1148 bus_probe_device+0x12a/0x220 drivers/base/bus.c:613 device_add+0x7b6/0xb70 drivers/base/core.c:3691 hid_add_device+0x272/0x3e0 drivers/hid/hid-core.c:2952 usbhid_probe+0xe3a/0x12f0 drivers/hid/usbhid/hid-core.c:1450 usb_probe_interface+0x668/0xc90 drivers/usb/core/driver.c:396 call_driver_probe drivers/base/dd.c:-1 [inline] really_probe+0x267/0xaf0 drivers/base/dd.c:721 __driver_probe_device+0x18c/0x320 drivers/base/dd.c:863 driver_probe_device+0x4f/0x240 drivers/base/dd.c:893 __device_attach_driver+0x279/0x430 drivers/base/dd.c:1021 bus_for_each_drv+0x258/0x2f0 drivers/base/bus.c:500 __device_attach+0x2c5/0x450 drivers/base/dd.c:1093 device_initial_probe+0xa1/0xd0 drivers/base/dd.c:1148 bus_probe_device+0x12a/0x220 drivers/base/bus.c:613 device_add+0x7b6/0xb70 drivers/base/core.c:3691 usb_set_configuration+0x1a87/0x2110 drivers/usb/core/message.c:2266 usb_generic_driver_probe+0x8d/0x150 drivers/usb/core/generic.c:250 usb_probe_device+0x1c4/0x3b0 drivers/usb/core/driver.c:291 call_driver_probe drivers/base/dd.c:-1 [inline] really_probe+0x267/0xaf0 drivers/base/dd.c:721 __driver_probe_device+0x18c/0x320 drivers/base/dd.c:863 driver_probe_device+0x4f/0x240 drivers/base/dd.c:893 __device_attach_driver+0x279/0x430 drivers/base/dd.c:1021 bus_for_each_drv+0x258/0x2f0 drivers/base/bus.c:500 __device_attach+0x2c5/0x450 drivers/base/dd.c:1093 device_initial_probe+0xa1/0xd0 drivers/base/dd.c:1148 bus_probe_device+0x12a/0x220 drivers/base/bus.c:613 device_add+0x7b6/0xb70 drivers/base/core.c:3691 usb_new_device+0xa08/0x16f0 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+0x2a1c/0x4f30 drivers/usb/core/hub.c:5953 process_one_work kernel/workqueue.c:3276 [inline] process_scheduled_works+0xb6e/0x18c0 kernel/workqueue.c:3359 worker_thread+0xa53/0xfc0 kernel/workqueue.c:3440 kthread+0x388/0x470 kernel/kthread.c:436 ret_from_fork+0x51e/0xb90 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 The buggy address belongs to the physical page: page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff888034463660 pfn:0x34463 flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff) raw: 00fff00000000000 dead000000000100 dead000000000122 0000000000000000 raw: ffff888034463660 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 0xd2cc0(GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 10614, tgid 10614 (dhcpcd-run-hook), ts 588453135188, free_ts 603045296041 set_page_owner include/linux/page_owner.h:32 [inline] post_alloc_hook+0x231/0x280 mm/page_alloc.c:1889 prep_new_page mm/page_alloc.c:1897 [inline] get_page_from_freelist+0x24dc/0x2580 mm/page_alloc.c:3962 __alloc_frozen_pages_noprof+0x18d/0x380 mm/page_alloc.c:5250 alloc_slab_page mm/slub.c:3292 [inline] allocate_slab+0x77/0x660 mm/slub.c:3481 new_slab mm/slub.c:3539 [inline] refill_objects+0x331/0x3c0 mm/slub.c:7175 refill_sheaf mm/slub.c:2812 [inline] __pcs_replace_empty_main+0x2e6/0x730 mm/slub.c:4615 alloc_from_pcs mm/slub.c:4717 [inline] slab_alloc_node mm/slub.c:4851 [inline] kmem_cache_alloc_noprof+0x37d/0x650 mm/slub.c:4873 anon_vma_alloc mm/rmap.c:94 [inline] anon_vma_fork+0x83/0x570 mm/rmap.c:391 dup_mmap+0x991/0x1d90 mm/mmap.c:1804 dup_mm kernel/fork.c:1531 [inline] copy_mm+0x13b/0x4a0 kernel/fork.c:1583 copy_process+0x18b6/0x3cd0 kernel/fork.c:2223 kernel_clone+0x248/0x8e0 kernel/fork.c:2653 __do_sys_clone kernel/fork.c:2794 [inline] __se_sys_clone kernel/fork.c:2778 [inline] __x64_sys_clone+0x1b6/0x230 kernel/fork.c:2778 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x14d/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f page last free pid 23 tgid 23 stack trace: reset_page_owner include/linux/page_owner.h:25 [inline] __free_pages_prepare mm/page_alloc.c:1433 [inline] __free_frozen_pages+0xc2b/0xdb0 mm/page_alloc.c:2978 rcu_do_batch kernel/rcu/tree.c:2617 [inline] rcu_core+0x7cd/0x1070 kernel/rcu/tree.c:2869 handle_softirqs+0x22a/0x870 kernel/softirq.c:622 run_ksoftirqd+0x36/0x60 kernel/softirq.c:1063 smpboot_thread_fn+0x541/0xa50 kernel/smpboot.c:160 kthread+0x388/0x470 kernel/kthread.c:436 ret_from_fork+0x51e/0xb90 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 Memory state around the buggy address: ffff888034463e80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff888034463f00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >ffff888034463f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff888034464000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff888034464080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ================================================================== ---------------- Code disassembly (best guess), 1 bytes skipped: 0: 85 0e test %ecx,(%rsi) 2: 00 75 1f add %dh,0x1f(%rbp) 5: c6 05 87 1f 85 0e 01 movb $0x1,0xe851f87(%rip) # 0xe851f93 c: 48 c7 c7 e0 a2 c9 8b mov $0xffffffff8bc9a2e0,%rdi 13: be 54 03 00 00 mov $0x354,%esi 18: 48 c7 c2 20 a3 c9 8b mov $0xffffffff8bc9a320,%rdx 1f: e8 17 57 2b 00 call 0x2b573b 24: 4c 89 6c 24 78 mov %r13,0x78(%rsp) * 29: 48 89 5c 24 70 mov %rbx,0x70(%rsp) <-- trapping instruction 2e: 4d 8d 6e 50 lea 0x50(%r14),%r13 32: 4c 89 e8 mov %r13,%rax 35: 48 c1 e8 03 shr $0x3,%rax 39: 48 89 44 24 38 mov %rax,0x38(%rsp) 3e: 80 .byte 0x80