================================================================== BUG: KASAN: use-after-free in ath9k_hif_usb_rx_stream drivers/net/wireless/ath/ath9k/hif_usb.c:636 [inline] BUG: KASAN: use-after-free in ath9k_hif_usb_rx_cb+0xd4d/0x1010 drivers/net/wireless/ath/ath9k/hif_usb.c:680 Read of size 4 at addr ffff88805c07c278 by task kworker/1:2/45 CPU: 1 PID: 45 Comm: kworker/1:2 Not tainted 5.15.0-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: events request_firmware_work_func Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x57/0x7d lib/dump_stack.c:106 print_address_description.constprop.0.cold+0x8d/0x320 mm/kasan/report.c:247 __kasan_report mm/kasan/report.c:433 [inline] kasan_report.cold+0x83/0xdf mm/kasan/report.c:450 ath9k_hif_usb_rx_stream drivers/net/wireless/ath/ath9k/hif_usb.c:636 [inline] ath9k_hif_usb_rx_cb+0xd4d/0x1010 drivers/net/wireless/ath/ath9k/hif_usb.c:680 __usb_hcd_giveback_urb+0x238/0x3f0 drivers/usb/core/hcd.c:1656 dummy_timer+0xeb8/0x2eb0 drivers/usb/gadget/udc/dummy_hcd.c:1987 call_timer_fn+0x163/0x4a0 kernel/time/timer.c:1421 expire_timers kernel/time/timer.c:1466 [inline] __run_timers.part.0+0x524/0x890 kernel/time/timer.c:1734 __run_timers kernel/time/timer.c:1715 [inline] run_timer_softirq+0x9c/0x190 kernel/time/timer.c:1747 __do_softirq+0x29b/0x9c2 kernel/softirq.c:558 invoke_softirq kernel/softirq.c:432 [inline] __irq_exit_rcu+0x123/0x180 kernel/softirq.c:636 irq_exit_rcu+0x5/0x20 kernel/softirq.c:648 sysvec_apic_timer_interrupt+0x93/0xc0 arch/x86/kernel/apic/apic.c:1097 asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:638 RIP: 0010:console_unlock+0x4df/0x870 kernel/printk/printk.c:2716 Code: 77 2a fe ff e8 92 29 00 00 48 83 3c 24 00 0f 85 e0 01 00 00 9c 58 f6 c4 02 0f 85 d3 02 00 00 48 83 3c 24 00 74 01 fb 45 85 e4 <0f> 85 27 02 00 00 8b 54 24 30 85 d2 0f 84 70 fc ff ff 31 d2 be a0 RSP: 0018:ffffc9000115f9b8 EFLAGS: 00000246 RAX: 0000000000000006 RBX: dffffc0000000000 RCX: 1ffffffff1e0e816 RDX: 0000000000000000 RSI: ffffffff88eb52a0 RDI: ffffffff89416120 RBP: ffffc9000115fa10 R08: 0000000000000001 R09: ffffffff8f073947 R10: 0000000000000001 R11: 74685f6b39687461 R12: 0000000000000000 R13: ffffffff8b9f25e8 R14: ffffffff8b9f25b0 R15: 0000000000000000 vprintk_emit+0x99/0x2f0 kernel/printk/printk.c:2245 _printk+0xad/0xde kernel/printk/printk.c:2266 ath9k_htc_hw_init.cold+0xc/0x12 drivers/net/wireless/ath/ath9k/htc_hst.c:504 ath9k_hif_usb_firmware_cb+0x23b/0x4d0 drivers/net/wireless/ath/ath9k/hif_usb.c:1239 request_firmware_work_func+0x126/0x230 drivers/base/firmware_loader/main.c:1022 process_one_work+0x87f/0x1450 kernel/workqueue.c:2298 worker_thread+0x598/0x1040 kernel/workqueue.c:2445 kthread+0x3ab/0x480 kernel/kthread.c:327 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 The buggy address belongs to the page: page:ffffea0001701f00 refcount:0 mapcount:0 mapping:0000000000000000 index:0x100 pfn:0x5c07c flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff) raw: 00fff00000000000 0000000000000000 dead000000000122 0000000000000000 raw: 0000000000000100 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as freed page last allocated via order 3, migratetype Unmovable, gfp_mask 0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), pid 45, ts 501242912543, free_ts 502268653789 prep_new_page mm/page_alloc.c:2418 [inline] get_page_from_freelist+0xa6f/0x2f10 mm/page_alloc.c:4149 __alloc_pages+0x1b2/0x500 mm/page_alloc.c:5369 kmalloc_order+0x34/0xf0 mm/slab_common.c:949 kmalloc_order_trace+0x14/0x120 mm/slab_common.c:965 kmalloc include/linux/slab.h:595 [inline] kzalloc include/linux/slab.h:724 [inline] wiphy_new_nm+0x63a/0x1d70 net/wireless/core.c:449 ieee80211_alloc_hw_nm+0x2f5/0x1fd0 net/mac80211/main.c:585 ieee80211_alloc_hw include/net/mac80211.h:4315 [inline] ath9k_htc_probe_device+0x91/0x1e30 drivers/net/wireless/ath/ath9k/htc_drv_init.c:939 ath9k_htc_hw_init+0x8/0x20 drivers/net/wireless/ath/ath9k/htc_hst.c:503 ath9k_hif_usb_firmware_cb+0x23b/0x4d0 drivers/net/wireless/ath/ath9k/hif_usb.c:1239 request_firmware_work_func+0x126/0x230 drivers/base/firmware_loader/main.c:1022 process_one_work+0x87f/0x1450 kernel/workqueue.c:2298 worker_thread+0x598/0x1040 kernel/workqueue.c:2445 kthread+0x3ab/0x480 kernel/kthread.c:327 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 page last free stack trace: reset_page_owner include/linux/page_owner.h:24 [inline] free_pages_prepare mm/page_alloc.c:1338 [inline] free_pcp_prepare+0x374/0x870 mm/page_alloc.c:1389 free_unref_page_prepare mm/page_alloc.c:3309 [inline] free_unref_page+0x19/0x690 mm/page_alloc.c:3388 device_release+0x93/0x200 drivers/base/core.c:2230 kobject_cleanup lib/kobject.c:705 [inline] kobject_release lib/kobject.c:736 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x139/0x410 lib/kobject.c:753 ath9k_htc_probe_device+0x1ab/0x1e30 drivers/net/wireless/ath/ath9k/htc_drv_init.c:976 ath9k_htc_hw_init+0x8/0x20 drivers/net/wireless/ath/ath9k/htc_hst.c:503 ath9k_hif_usb_firmware_cb+0x23b/0x4d0 drivers/net/wireless/ath/ath9k/hif_usb.c:1239 request_firmware_work_func+0x126/0x230 drivers/base/firmware_loader/main.c:1022 process_one_work+0x87f/0x1450 kernel/workqueue.c:2298 worker_thread+0x598/0x1040 kernel/workqueue.c:2445 kthread+0x3ab/0x480 kernel/kthread.c:327 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 Memory state around the buggy address: ffff88805c07c100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff88805c07c180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >ffff88805c07c200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff88805c07c280: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff88805c07c300: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ================================================================== ---------------- Code disassembly (best guess), 4 bytes skipped: 0: e8 92 29 00 00 callq 0x2997 5: 48 83 3c 24 00 cmpq $0x0,(%rsp) a: 0f 85 e0 01 00 00 jne 0x1f0 10: 9c pushfq 11: 58 pop %rax 12: f6 c4 02 test $0x2,%ah 15: 0f 85 d3 02 00 00 jne 0x2ee 1b: 48 83 3c 24 00 cmpq $0x0,(%rsp) 20: 74 01 je 0x23 22: fb sti 23: 45 85 e4 test %r12d,%r12d * 26: 0f 85 27 02 00 00 jne 0x253 <-- trapping instruction 2c: 8b 54 24 30 mov 0x30(%rsp),%edx 30: 85 d2 test %edx,%edx 32: 0f 84 70 fc ff ff je 0xfffffca8 38: 31 d2 xor %edx,%edx 3a: be .byte 0xbe 3b: a0 .byte 0xa0