================================================================== BUG: KASAN: use-after-free in dev_get_flags+0x188/0x1d0 net/core/dev.c:8845 Read of size 4 at addr ffff88805a3000b0 by task kworker/1:1/51 CPU: 1 UID: 0 PID: 51 Comm: kworker/1:1 Not tainted 6.12.0-rc5-next-20241101-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024 Workqueue: infiniband ib_cache_event_task Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:377 [inline] print_report+0x169/0x550 mm/kasan/report.c:488 kasan_report+0x143/0x180 mm/kasan/report.c:601 dev_get_flags+0x188/0x1d0 net/core/dev.c:8845 rxe_query_port+0x12d/0x260 drivers/infiniband/sw/rxe/rxe_verbs.c:60 __ib_query_port drivers/infiniband/core/device.c:2111 [inline] ib_query_port+0x166/0x7d0 drivers/infiniband/core/device.c:2143 ib_cache_update+0x1a9/0xb80 drivers/infiniband/core/cache.c:1494 ib_cache_event_task+0xf3/0x1e0 drivers/infiniband/core/cache.c:1568 process_one_work kernel/workqueue.c:3229 [inline] process_scheduled_works+0xa63/0x1850 kernel/workqueue.c:3310 worker_thread+0x870/0xd30 kernel/workqueue.c:3391 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 The buggy address belongs to the physical page: page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88805a304400 pfn:0x5a300 flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff) raw: 00fff00000000000 ffffea0001b5e708 ffff8880b87448c0 0000000000000000 raw: ffff88805a304400 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as freed page last allocated via order 2, migratetype Unmovable, gfp_mask 0x446dc0(GFP_KERNEL_ACCOUNT|__GFP_NOWARN|__GFP_RETRY_MAYFAIL|__GFP_COMP|__GFP_ZERO), pid 8313, tgid 8313 (syz-executor), ts 235048829592, free_ts 540076170833 set_page_owner include/linux/page_owner.h:32 [inline] post_alloc_hook+0x1f3/0x230 mm/page_alloc.c:1541 prep_new_page mm/page_alloc.c:1549 [inline] get_page_from_freelist+0x3725/0x3870 mm/page_alloc.c:3495 __alloc_pages_noprof+0x292/0x710 mm/page_alloc.c:4771 __alloc_pages_node_noprof include/linux/gfp.h:269 [inline] alloc_pages_node_noprof include/linux/gfp.h:296 [inline] ___kmalloc_large_node+0x8b/0x1d0 mm/slub.c:4228 __kmalloc_large_node_noprof+0x1a/0x80 mm/slub.c:4255 __do_kmalloc_node mm/slub.c:4271 [inline] __kmalloc_node_noprof+0x33a/0x4d0 mm/slub.c:4289 __kvmalloc_node_noprof+0x72/0x190 mm/util.c:650 alloc_netdev_mqs+0xa4/0x1080 net/core/dev.c:11164 tun_set_iff+0x542/0xe80 drivers/net/tun.c:2833 __tun_chr_ioctl+0x863/0x2400 drivers/net/tun.c:3131 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl+0xf9/0x170 fs/ioctl.c:893 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f page last free pid 10850 tgid 10849 stack trace: reset_page_owner include/linux/page_owner.h:25 [inline] free_pages_prepare mm/page_alloc.c:1112 [inline] free_unref_page+0xcfb/0xf20 mm/page_alloc.c:2678 __folio_put+0x2c7/0x440 mm/swap.c:126 folio_put include/linux/mm.h:1488 [inline] free_large_kmalloc+0x105/0x1c0 mm/slub.c:4717 kfree+0x212/0x420 mm/slub.c:4740 device_release+0x99/0x1c0 kobject_cleanup lib/kobject.c:689 [inline] kobject_release lib/kobject.c:720 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x22f/0x480 lib/kobject.c:737 netdev_run_todo+0xe79/0x1000 net/core/dev.c:10879 tun_detach drivers/net/tun.c:704 [inline] tun_chr_close+0x137/0x1b0 drivers/net/tun.c:3517 __fput+0x23c/0xa50 fs/file_table.c:450 task_work_run+0x24f/0x310 kernel/task_work.c:239 exit_task_work include/linux/task_work.h:43 [inline] do_exit+0xa2f/0x28e0 kernel/exit.c:938 do_group_exit+0x207/0x2c0 kernel/exit.c:1087 get_signal+0x16a3/0x1740 kernel/signal.c:2884 arch_do_signal_or_restart+0x96/0x860 arch/x86/kernel/signal.c:337 exit_to_user_mode_loop kernel/entry/common.c:111 [inline] exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0xc9/0x370 kernel/entry/common.c:218 do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89 Memory state around the buggy address: ffff88805a2fff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff88805a300000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >ffff88805a300080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff88805a300100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff88805a300180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ==================================================================