syzbot


KASAN: slab-use-after-free Write in detach_if_pending

Status: auto-obsoleted due to no activity on 2023/11/08 05:10
Subsystems: wireguard batman
[Documentation on labels]
First crash: 372d, last: 362d
Similar bugs (4)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream general protection fault in detach_if_pending (2) net 1 781d 781d 0/26 auto-closed as invalid on 2022/06/11 02:46
linux-4.14 general protection fault in detach_if_pending (2) 1 1090d 1090d 0/1 auto-closed as invalid on 2021/09/04 11:36
android-54 KASAN: use-after-free Write in detach_if_pending C 393 22h18m 446d 0/2 upstream: reported C repro on 2023/02/10 18:19
upstream KASAN: invalid-access Write in detach_if_pending wireguard 2 1170d 1172d 0/26 auto-closed as invalid on 2021/05/17 08:51

Sample crash report:
==================================================================
BUG: KASAN: slab-use-after-free in __hlist_del include/linux/list.h:899 [inline]
BUG: KASAN: slab-use-after-free in detach_timer kernel/time/timer.c:880 [inline]
BUG: KASAN: slab-use-after-free in detach_if_pending+0x3a9/0x3e0 kernel/time/timer.c:899
Write of size 8 at addr ffff888079d814f8 by task kworker/u4:7/5486

CPU: 1 PID: 5486 Comm: kworker/u4:7 Not tainted 6.3.0-syzkaller-04439-g4173cf6fb6b7 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/14/2023
Workqueue: netns cleanup_net
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0xd9/0x150 lib/dump_stack.c:106
 print_address_description.constprop.0+0x2c/0x3c0 mm/kasan/report.c:319
 print_report mm/kasan/report.c:430 [inline]
 kasan_report+0x11c/0x130 mm/kasan/report.c:536
 __hlist_del include/linux/list.h:899 [inline]
 detach_timer kernel/time/timer.c:880 [inline]
 detach_if_pending+0x3a9/0x3e0 kernel/time/timer.c:899
 __timer_delete+0xbb/0x1b0 kernel/time/timer.c:1336
 del_timer include/linux/timer.h:213 [inline]
 try_to_grab_pending+0x6d/0xd0 kernel/workqueue.c:1278
 __cancel_work_timer+0xa6/0x570 kernel/workqueue.c:3220
 batadv_dat_free+0x45/0xe0 net/batman-adv/distributed-arp-table.c:840
 batadv_mesh_free+0x89/0x170 net/batman-adv/main.c:270
 batadv_softif_free+0x15/0x20 net/batman-adv/soft-interface.c:984
 netdev_run_todo+0x6bf/0x1100 net/core/dev.c:10354
 default_device_exit_batch+0x456/0x5b0 net/core/dev.c:11354
 ops_exit_list+0x125/0x170 net/core/net_namespace.c:175
 cleanup_net+0x4ee/0xb10 net/core/net_namespace.c:614
 process_one_work+0x991/0x15c0 kernel/workqueue.c:2390
 worker_thread+0x669/0x1090 kernel/workqueue.c:2537
 kthread+0x33e/0x440 kernel/kthread.c:379
 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308
 </TASK>

Allocated by task 12668:
 kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 ____kasan_kmalloc mm/kasan/common.c:374 [inline]
 ____kasan_kmalloc mm/kasan/common.c:333 [inline]
 __kasan_kmalloc+0xa2/0xb0 mm/kasan/common.c:383
 kasan_kmalloc include/linux/kasan.h:196 [inline]
 __do_kmalloc_node mm/slab_common.c:966 [inline]
 __kmalloc_node+0x61/0x1a0 mm/slab_common.c:973
 kmalloc_node include/linux/slab.h:580 [inline]
 kvmalloc_node+0x76/0x1a0 mm/util.c:603
 kvmalloc include/linux/slab.h:698 [inline]
 kvzalloc include/linux/slab.h:706 [inline]
 alloc_netdev_mqs+0x9c/0x1250 net/core/dev.c:10588
 rtnl_create_link+0xbeb/0xee0 net/core/rtnetlink.c:3312
 rtnl_newlink_create net/core/rtnetlink.c:3430 [inline]
 __rtnl_newlink+0xfd4/0x1840 net/core/rtnetlink.c:3657
 rtnl_newlink+0x68/0xa0 net/core/rtnetlink.c:3670
 rtnetlink_rcv_msg+0x43d/0xd50 net/core/rtnetlink.c:6181
 netlink_rcv_skb+0x165/0x440 net/netlink/af_netlink.c:2577
 netlink_unicast_kernel net/netlink/af_netlink.c:1339 [inline]
 netlink_unicast+0x547/0x7f0 net/netlink/af_netlink.c:1365
 netlink_sendmsg+0x925/0xe30 net/netlink/af_netlink.c:1942
 sock_sendmsg_nosec net/socket.c:724 [inline]
 sock_sendmsg+0xde/0x190 net/socket.c:747
 ____sys_sendmsg+0x71c/0x900 net/socket.c:2501
 ___sys_sendmsg+0x110/0x1b0 net/socket.c:2555
 __sys_sendmsg+0xf7/0x1c0 net/socket.c:2584
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

Freed by task 5486:
 kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 kasan_save_free_info+0x2e/0x40 mm/kasan/generic.c:521
 ____kasan_slab_free mm/kasan/common.c:236 [inline]
 ____kasan_slab_free+0x160/0x1c0 mm/kasan/common.c:200
 kasan_slab_free include/linux/kasan.h:162 [inline]
 slab_free_hook mm/slub.c:1781 [inline]
 slab_free_freelist_hook+0x8b/0x1c0 mm/slub.c:1807
 slab_free mm/slub.c:3787 [inline]
 __kmem_cache_free+0xaf/0x2d0 mm/slub.c:3800
 kvfree+0x46/0x50 mm/util.c:649
 device_release+0xa3/0x240 drivers/base/core.c:2436
 kobject_cleanup lib/kobject.c:681 [inline]
 kobject_release lib/kobject.c:712 [inline]
 kref_put include/linux/kref.h:65 [inline]
 kobject_put+0x1c2/0x4d0 lib/kobject.c:729
 netdev_run_todo+0x762/0x1100 net/core/dev.c:10362
 default_device_exit_batch+0x456/0x5b0 net/core/dev.c:11354
 ops_exit_list+0x125/0x170 net/core/net_namespace.c:175
 cleanup_net+0x4ee/0xb10 net/core/net_namespace.c:614
 process_one_work+0x991/0x15c0 kernel/workqueue.c:2390
 worker_thread+0x669/0x1090 kernel/workqueue.c:2537
 kthread+0x33e/0x440 kernel/kthread.c:379
 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308

Last potentially related work creation:
 kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
 __kasan_record_aux_stack+0xbc/0xd0 mm/kasan/generic.c:491
 insert_work+0x48/0x350 kernel/workqueue.c:1361
 __queue_work+0x625/0x1120 kernel/workqueue.c:1524
 call_timer_fn+0x1a0/0x580 kernel/time/timer.c:1700
 expire_timers+0xbc/0x4b0 kernel/time/timer.c:1746
 __run_timers kernel/time/timer.c:2022 [inline]
 __run_timers kernel/time/timer.c:1995 [inline]
 run_timer_softirq+0x326/0x910 kernel/time/timer.c:2035
 __do_softirq+0x1d4/0x905 kernel/softirq.c:571

Second to last potentially related work creation:
 kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
 __kasan_record_aux_stack+0xbc/0xd0 mm/kasan/generic.c:491
 insert_work+0x48/0x350 kernel/workqueue.c:1361
 __queue_work+0x625/0x1120 kernel/workqueue.c:1524
 call_timer_fn+0x1a0/0x580 kernel/time/timer.c:1700
 expire_timers+0xbc/0x4b0 kernel/time/timer.c:1746
 __run_timers kernel/time/timer.c:2022 [inline]
 __run_timers kernel/time/timer.c:1995 [inline]
 run_timer_softirq+0x326/0x910 kernel/time/timer.c:2035
 __do_softirq+0x1d4/0x905 kernel/softirq.c:571

The buggy address belongs to the object at ffff888079d80000
 which belongs to the cache kmalloc-cg-8k of size 8192
The buggy address is located 5368 bytes inside of
 freed 8192-byte region [ffff888079d80000, ffff888079d82000)

The buggy address belongs to the physical page:
page:ffffea0001e76000 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x79d80
head:ffffea0001e76000 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0
memcg:ffff88807aee31c1
flags: 0xfff00000010200(slab|head|node=0|zone=1|lastcpupid=0x7ff)
raw: 00fff00000010200 ffff88801244f640 ffffea0000b65200 0000000000000002
raw: 0000000000000000 0000000000020002 00000001ffffffff ffff88807aee31c1
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 3, migratetype Unmovable, gfp_mask 0x1d60c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_RETRY_MAYFAIL|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_HARDWALL), pid 12668, tgid 12651 (syz-executor.1), ts 569577783390, free_ts 569400967489
 prep_new_page mm/page_alloc.c:2553 [inline]
 get_page_from_freelist+0x1190/0x2e20 mm/page_alloc.c:4326
 __alloc_pages+0x1cb/0x4a0 mm/page_alloc.c:5592
 alloc_pages+0x1aa/0x270 mm/mempolicy.c:2277
 alloc_slab_page mm/slub.c:1851 [inline]
 allocate_slab+0x25f/0x390 mm/slub.c:1998
 new_slab mm/slub.c:2051 [inline]
 ___slab_alloc+0xa91/0x1400 mm/slub.c:3193
 __slab_alloc.constprop.0+0x56/0xa0 mm/slub.c:3292
 __slab_alloc_node mm/slub.c:3345 [inline]
 slab_alloc_node mm/slub.c:3442 [inline]
 __kmem_cache_alloc_node+0x136/0x320 mm/slub.c:3491
 __do_kmalloc_node mm/slab_common.c:965 [inline]
 __kmalloc_node+0x51/0x1a0 mm/slab_common.c:973
 kmalloc_node include/linux/slab.h:580 [inline]
 kvmalloc_node+0x76/0x1a0 mm/util.c:603
 kvmalloc include/linux/slab.h:698 [inline]
 kvzalloc include/linux/slab.h:706 [inline]
 alloc_netdev_mqs+0x9c/0x1250 net/core/dev.c:10588
 rtnl_create_link+0xbeb/0xee0 net/core/rtnetlink.c:3312
 rtnl_newlink_create net/core/rtnetlink.c:3430 [inline]
 __rtnl_newlink+0xfd4/0x1840 net/core/rtnetlink.c:3657
 rtnl_newlink+0x68/0xa0 net/core/rtnetlink.c:3670
 rtnetlink_rcv_msg+0x43d/0xd50 net/core/rtnetlink.c:6181
 netlink_rcv_skb+0x165/0x440 net/netlink/af_netlink.c:2577
 netlink_unicast_kernel net/netlink/af_netlink.c:1339 [inline]
 netlink_unicast+0x547/0x7f0 net/netlink/af_netlink.c:1365
page last free stack trace:
 reset_page_owner include/linux/page_owner.h:24 [inline]
 free_pages_prepare mm/page_alloc.c:1454 [inline]
 free_pcp_prepare+0x5d5/0xa50 mm/page_alloc.c:1504
 free_unref_page_prepare mm/page_alloc.c:3388 [inline]
 free_unref_page+0x1d/0x490 mm/page_alloc.c:3483
 qlink_free mm/kasan/quarantine.c:168 [inline]
 qlist_free_all+0x6a/0x170 mm/kasan/quarantine.c:187
 kasan_quarantine_reduce+0x195/0x220 mm/kasan/quarantine.c:294
 __kasan_slab_alloc+0x63/0x90 mm/kasan/common.c:305
 kasan_slab_alloc include/linux/kasan.h:186 [inline]
 slab_post_alloc_hook mm/slab.h:710 [inline]
 slab_alloc_node mm/slub.c:3452 [inline]
 slab_alloc mm/slub.c:3460 [inline]
 __kmem_cache_alloc_lru mm/slub.c:3467 [inline]
 kmem_cache_alloc+0x17c/0x3b0 mm/slub.c:3476
 kmem_cache_zalloc include/linux/slab.h:671 [inline]
 __kernfs_new_node+0xd4/0x8b0 fs/kernfs/dir.c:611
 kernfs_new_node+0x97/0x120 fs/kernfs/dir.c:673
 __kernfs_create_file+0x55/0x350 fs/kernfs/file.c:1047
 sysfs_add_file_mode_ns+0x213/0x3f0 fs/sysfs/file.c:294
 create_files fs/sysfs/group.c:64 [inline]
 internal_create_group+0x322/0xb80 fs/sysfs/group.c:148
 internal_create_groups.part.0+0x90/0x140 fs/sysfs/group.c:188
 internal_create_groups fs/sysfs/group.c:184 [inline]
 sysfs_create_groups+0x29/0x50 fs/sysfs/group.c:214
 create_dir lib/kobject.c:68 [inline]
 kobject_add_internal+0x318/0x9c0 lib/kobject.c:231
 kobject_add_varg lib/kobject.c:366 [inline]
 kobject_init_and_add+0x101/0x170 lib/kobject.c:449
 netdev_queue_add_kobject net/core/net-sysfs.c:1694 [inline]
 netdev_queue_update_kobjects+0x203/0x4f0 net/core/net-sysfs.c:1746

Memory state around the buggy address:
 ffff888079d81380: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888079d81400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff888079d81480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                ^
 ffff888079d81500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888079d81580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Crashes (2):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/04/26 03:45 upstream 4173cf6fb6b7 7560799c .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce KASAN: slab-use-after-free Write in detach_if_pending
2023/05/05 11:09 net 120a56b01bee 518a39a6 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-this-kasan-gce KASAN: slab-use-after-free Write in detach_if_pending
* Struck through repros no longer work on HEAD.