==================================================================
BUG: KASAN: use-after-free in mcp2221_raw_event+0xf94/0x1030 drivers/hid/hid-mcp2221.c:854
Read of size 1 at addr ffff888023f6bfff by task kworker/u8:9/3454
CPU: 0 UID: 0 PID: 3454 Comm: kworker/u8:9 Not tainted 6.16.0-rc3-syzkaller-00233-g35e261cd95dd #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
Workqueue: bat_events batadv_nc_worker
Call Trace:
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
print_address_description mm/kasan/report.c:408 [inline]
print_report+0xcd/0x680 mm/kasan/report.c:521
kasan_report+0xe0/0x110 mm/kasan/report.c:634
mcp2221_raw_event+0xf94/0x1030 drivers/hid/hid-mcp2221.c:854
__hid_input_report.constprop.0+0x314/0x450 drivers/hid/hid-core.c:2117
hid_irq_in+0x35e/0x870 drivers/hid/usbhid/hid-core.c:286
__usb_hcd_giveback_urb+0x38d/0x6e0 drivers/usb/core/hcd.c:1650
usb_hcd_giveback_urb+0x39b/0x450 drivers/usb/core/hcd.c:1734
dummy_timer+0x180e/0x3a20 drivers/usb/gadget/udc/dummy_hcd.c:1995
__run_hrtimer kernel/time/hrtimer.c:1761 [inline]
__hrtimer_run_queues+0x202/0xad0 kernel/time/hrtimer.c:1825
hrtimer_run_softirq+0x17d/0x350 kernel/time/hrtimer.c:1842
handle_softirqs+0x216/0x8e0 kernel/softirq.c:579
__do_softirq kernel/softirq.c:613 [inline]
invoke_softirq kernel/softirq.c:453 [inline]
__irq_exit_rcu+0x109/0x170 kernel/softirq.c:680
irq_exit_rcu+0x9/0x30 kernel/softirq.c:696
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1050 [inline]
sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1050
asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
RIP: 0010:lockdep_enabled kernel/locking/lockdep.c:124 [inline]
RIP: 0010:lock_acquire kernel/locking/lockdep.c:5847 [inline]
RIP: 0010:lock_acquire+0x127/0x350 kernel/locking/lockdep.c:5828
Code: 0d a2 ca 0f 0f 85 c9 0f 84 b1 00 00 00 65 8b 05 17 a4 34 12 85 c0 0f 85 a2 00 00 00 65 48 8b 05 57 62 34 12 8b 90 ec 0a 00 00 <85> d2 0f 85 8c 00 00 00 9c 8f 04 24 fa 48 c7 c7 d3 c4 f0 8d e8 20
RSP: 0018:ffffc9000d047ab0 EFLAGS: 00000246
RAX: ffff888033084880 RBX: ffffffff8e5c4940 RCX: 0000000000000001
RDX: 0000000000000000 RSI: ffffffff8b4e101a RDI: fffffbfff1cb8928
RBP: 0000000000000002 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000400 R11: 0000000000000001 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
rcu_lock_acquire include/linux/rcupdate.h:331 [inline]
rcu_read_lock include/linux/rcupdate.h:841 [inline]
batadv_nc_purge_orig_hash net/batman-adv/network-coding.c:408 [inline]
batadv_nc_worker+0x16a/0x1030 net/batman-adv/network-coding.c:719
process_one_work+0x9cc/0x1b70 kernel/workqueue.c:3238
process_scheduled_works kernel/workqueue.c:3321 [inline]
worker_thread+0x6c8/0xf10 kernel/workqueue.c:3402
kthread+0x3c2/0x780 kernel/kthread.c:464
ret_from_fork+0x5d4/0x6f0 arch/x86/kernel/process.c:148
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:0x0 pfn:0x23f6b
flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff)
raw: 00fff00000000000 ffffea00008fda88 ffffea0001efccc8 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 13173, tgid 13169 (syz.3.1611), ts 648248041908, free_ts 661191852808
set_page_owner include/linux/page_owner.h:32 [inline]
post_alloc_hook+0x1c0/0x230 mm/page_alloc.c:1704
prep_new_page mm/page_alloc.c:1712 [inline]
get_page_from_freelist+0x1321/0x3890 mm/page_alloc.c:3669
__alloc_frozen_pages_noprof+0x261/0x23f0 mm/page_alloc.c:4959
__alloc_pages_noprof mm/page_alloc.c:4993 [inline]
alloc_pages_bulk_noprof+0x71c/0x1410 mm/page_alloc.c:4913
___alloc_pages_bulk mm/kasan/shadow.c:344 [inline]
__kasan_populate_vmalloc mm/kasan/shadow.c:368 [inline]
kasan_populate_vmalloc+0xf1/0x1f0 mm/kasan/shadow.c:417
alloc_vmap_area+0x959/0x29c0 mm/vmalloc.c:2084
__get_vm_area_node+0x1ca/0x330 mm/vmalloc.c:3179
__vmalloc_node_range_noprof+0x271/0x14b0 mm/vmalloc.c:3845
__vmalloc_node_noprof+0xad/0xf0 mm/vmalloc.c:3948
__snd_dma_alloc_pages+0x53/0x90 sound/core/memalloc.c:45
snd_dma_alloc_dir_pages+0x151/0x240 sound/core/memalloc.c:79
do_alloc_pages+0x115/0x280 sound/core/pcm_memory.c:69
snd_pcm_lib_malloc_pages+0x3df/0x980 sound/core/pcm_memory.c:455
snd_pcm_hw_params+0x15e1/0x1b40 sound/core/pcm_native.c:790
snd_pcm_kernel_ioctl+0x147/0x2e0 sound/core/pcm_native.c:3457
snd_pcm_oss_change_params_locked+0x1432/0x3a30 sound/core/oss/pcm_oss.c:965
page last free pid 5923 tgid 5923 stack trace:
reset_page_owner include/linux/page_owner.h:25 [inline]
free_pages_prepare mm/page_alloc.c:1248 [inline]
__free_frozen_pages+0x7fe/0x1180 mm/page_alloc.c:2706
kasan_depopulate_vmalloc_pte+0x5f/0x80 mm/kasan/shadow.c:472
apply_to_pte_range mm/memory.c:3032 [inline]
apply_to_pmd_range mm/memory.c:3076 [inline]
apply_to_pud_range mm/memory.c:3112 [inline]
apply_to_p4d_range mm/memory.c:3148 [inline]
__apply_to_page_range+0xa92/0x1350 mm/memory.c:3184
kasan_release_vmalloc+0xd1/0xe0 mm/kasan/shadow.c:593
kasan_release_vmalloc_node mm/vmalloc.c:2241 [inline]
purge_vmap_node+0x1c4/0xa30 mm/vmalloc.c:2258
__purge_vmap_area_lazy+0xa06/0xc60 mm/vmalloc.c:2348
drain_vmap_area_work+0x27/0x40 mm/vmalloc.c:2382
process_one_work+0x9cc/0x1b70 kernel/workqueue.c:3238
process_scheduled_works kernel/workqueue.c:3321 [inline]
worker_thread+0x6c8/0xf10 kernel/workqueue.c:3402
kthread+0x3c2/0x780 kernel/kthread.c:464
ret_from_fork+0x5d4/0x6f0 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
Memory state around the buggy address:
ffff888023f6be80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff888023f6bf00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>ffff888023f6bf80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
^
ffff888023f6c000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff888023f6c080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================
----------------
Code disassembly (best guess):
0: 0d a2 ca 0f 0f or $0xf0fcaa2,%eax
5: 85 c9 test %ecx,%ecx
7: 0f 84 b1 00 00 00 je 0xbe
d: 65 8b 05 17 a4 34 12 mov %gs:0x1234a417(%rip),%eax # 0x1234a42b
14: 85 c0 test %eax,%eax
16: 0f 85 a2 00 00 00 jne 0xbe
1c: 65 48 8b 05 57 62 34 mov %gs:0x12346257(%rip),%rax # 0x1234627b
23: 12
24: 8b 90 ec 0a 00 00 mov 0xaec(%rax),%edx
* 2a: 85 d2 test %edx,%edx <-- trapping instruction
2c: 0f 85 8c 00 00 00 jne 0xbe
32: 9c pushf
33: 8f 04 24 pop (%rsp)
36: fa cli
37: 48 c7 c7 d3 c4 f0 8d mov $0xffffffff8df0c4d3,%rdi
3e: e8 .byte 0xe8
3f: 20 .byte 0x20