==================================================================
BUG: KASAN: slab-use-after-free in rose_timer_expiry+0x46a/0x4b0 net/rose/rose_timer.c:183
Read of size 2 at addr ffff88805ec2782a by task syz.2.381/7616
CPU: 0 PID: 7616 Comm: syz.2.381 Not tainted 6.6.100-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
Call Trace:
dump_stack_lvl+0x16c/0x230 lib/dump_stack.c:106
print_address_description mm/kasan/report.c:364 [inline]
print_report+0xac/0x200 mm/kasan/report.c:466
kasan_report+0x117/0x150 mm/kasan/report.c:579
rose_timer_expiry+0x46a/0x4b0 net/rose/rose_timer.c:183
call_timer_fn+0x16e/0x530 kernel/time/timer.c:1700
expire_timers kernel/time/timer.c:1751 [inline]
__run_timers+0x52d/0x7d0 kernel/time/timer.c:2022
run_timer_softirq+0x67/0xf0 kernel/time/timer.c:2035
handle_softirqs+0x280/0x820 kernel/softirq.c:578
__do_softirq kernel/softirq.c:612 [inline]
invoke_softirq kernel/softirq.c:452 [inline]
__irq_exit_rcu+0xc7/0x190 kernel/softirq.c:661
irq_exit_rcu+0x9/0x20 kernel/softirq.c:673
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1088 [inline]
sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1088
asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:687
RIP: 0010:raw_spin_rq_unlock_irq+0x13/0x90 kernel/sched/sched.h:1385
Code: 0f 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 b2 51 0f 09 66 90 41 57 41 56 53 eb 11 e8 04 fa 18 09 e8 0f 33 2e 00 fb 5b <41> 5e 41 5f c3 f3 0f 1e fa 49 be 00 00 00 00 00 fc ff df 49 89 ff
RSP: 0000:ffffc90003347b88 EFLAGS: 00000282
RAX: aab91117459bf100 RBX: ffff8880b8e3d188 RCX: aab91117459bf100
RDX: dffffc0000000000 RSI: ffffffff8aaaba40 RDI: ffffffff8afc6700
RBP: ffffc90003347d90 R08: ffffffff8e4a7daf R09: 1ffffffff1c94fb5
R10: dffffc0000000000 R11: fffffbfff1c94fb6 R12: dffffc0000000000
R13: ffff8880b8e3c440 R14: dffffc0000000000 R15: ffff8880b8e3d188
__schedule+0x171e/0x44d0 kernel/sched/core.c:6704
preempt_schedule_irq+0xb5/0x140 kernel/sched/core.c:7010
irqentry_exit+0x67/0x70 kernel/entry/common.c:438
asm_sysvec_reschedule_ipi+0x1a/0x20 arch/x86/include/asm/idtentry.h:692
RIP: 0010:exit_to_user_mode_loop+0x40/0x110 kernel/entry/common.c:164
Code: fb eb 1d e8 62 a0 fa 08 65 48 8b 05 1a 2d 91 7e 4c 8b 30 41 f7 c6 0e 30 02 00 0f 84 c4 00 00 00 e8 a5 6b 19 00 fb 41 f6 c6 08 <74> 05 e8 e9 cc 02 09 41 f7 c6 00 10 00 00 74 08 48 89 df e8 b8 e5
RSP: 0000:ffffc90003347f10 EFLAGS: 00000202
RAX: aab91117459bf100 RBX: ffffc90003347f58 RCX: aab91117459bf100
RDX: dffffc0000000000 RSI: ffffffff8aaaba40 RDI: ffffffff8afc6700
RBP: 0000000000000000 R08: ffffffff8e4a7daf R09: 1ffffffff1c94fb5
R10: dffffc0000000000 R11: fffffbfff1c94fb6 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000008 R15: ffff8880210bbc00
exit_to_user_mode_prepare+0xb1/0x140 kernel/entry/common.c:210
irqentry_exit_to_user_mode+0x9/0x40 kernel/entry/common.c:315
asm_sysvec_call_function_single+0x1a/0x20 arch/x86/include/asm/idtentry.h:694
RIP: 0033:0x7fd92166e9b1
Code: 45 31 f6 44 0f b6 e6 85 c0 0f 84 9e 00 00 00 44 89 f9 49 8b 50 30 4c 89 f0 49 03 14 ca 80 3d fd 91 34 00 00 49 89 d6 48 89 d5 <74> 28 25 ff 0f 00 00 83 f0 3d 8d 04 c0 89 c5 c1 ed 04 31 c5 69 ed
RSP: 002b:00007ffe04a61ac0 EFLAGS: 00000202
RAX: ffffffff813210a2 RBX: 00007fd9224e5720 RCX: 0000000000002270
RDX: ffffffff813aa13c RSI: ffffffff81321879 RDI: 0000000000000010
RBP: ffffffff813aa13c R08: 00007fd9219b6118 R09: 00007fd9219a2000
R10: 00007fd9207fd008 R11: 0000000000000010 R12: 0000000000000010
R13: 0000000000000000 R14: ffffffff813aa13c R15: 0000000000002270
Allocated by task 5158:
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4e/0x70 mm/kasan/common.c:52
____kasan_kmalloc mm/kasan/common.c:374 [inline]
__kasan_kmalloc+0x8f/0xa0 mm/kasan/common.c:383
kmalloc include/linux/slab.h:600 [inline]
kzalloc include/linux/slab.h:721 [inline]
kernfs_fop_open+0x3f5/0xcc0 fs/kernfs/file.c:672
do_dentry_open+0x8c6/0x1500 fs/open.c:929
do_open fs/namei.c:3632 [inline]
path_openat+0x274b/0x3190 fs/namei.c:3789
do_filp_open+0x1c5/0x3d0 fs/namei.c:3816
do_sys_openat2+0x12c/0x1c0 fs/open.c:1419
do_sys_open fs/open.c:1434 [inline]
__do_sys_openat fs/open.c:1450 [inline]
__se_sys_openat fs/open.c:1445 [inline]
__x64_sys_openat+0x139/0x160 fs/open.c:1445
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x55/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x68/0xd2
Freed by task 5158:
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4e/0x70 mm/kasan/common.c:52
kasan_save_free_info+0x2e/0x50 mm/kasan/generic.c:522
____kasan_slab_free+0x126/0x1e0 mm/kasan/common.c:236
kasan_slab_free include/linux/kasan.h:164 [inline]
slab_free_hook mm/slub.c:1806 [inline]
slab_free_freelist_hook+0x130/0x1b0 mm/slub.c:1832
slab_free mm/slub.c:3816 [inline]
__kmem_cache_free+0xba/0x1f0 mm/slub.c:3829
kernfs_fop_release+0x166/0x190 fs/kernfs/file.c:810
__fput+0x234/0x970 fs/file_table.c:384
__do_sys_close fs/open.c:1571 [inline]
__se_sys_close+0x15f/0x220 fs/open.c:1556
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x55/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x68/0xd2
Last potentially related work creation:
kasan_save_stack+0x3e/0x60 mm/kasan/common.c:45
__kasan_record_aux_stack+0xaf/0xc0 mm/kasan/generic.c:492
insert_work+0x3d/0x310 kernel/workqueue.c:1651
__queue_work+0xd2c/0x1020 kernel/workqueue.c:1804
call_timer_fn+0x16e/0x530 kernel/time/timer.c:1700
expire_timers kernel/time/timer.c:1746 [inline]
__run_timers+0x558/0x7d0 kernel/time/timer.c:2022
run_timer_softirq+0x67/0xf0 kernel/time/timer.c:2035
handle_softirqs+0x280/0x820 kernel/softirq.c:578
__do_softirq kernel/softirq.c:612 [inline]
invoke_softirq kernel/softirq.c:452 [inline]
__irq_exit_rcu+0xc7/0x190 kernel/softirq.c:661
irq_exit_rcu+0x9/0x20 kernel/softirq.c:673
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1088 [inline]
sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1088
asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:687
Second to last potentially related work creation:
kasan_save_stack+0x3e/0x60 mm/kasan/common.c:45
__kasan_record_aux_stack+0xaf/0xc0 mm/kasan/generic.c:492
__call_rcu_common kernel/rcu/tree.c:2721 [inline]
call_rcu+0x158/0x930 kernel/rcu/tree.c:2837
fib6_info_release include/net/ip6_fib.h:339 [inline]
fixup_permanent_addr net/ipv6/addrconf.c:3567 [inline]
addrconf_permanent_addr+0x354/0x980 net/ipv6/addrconf.c:3595
addrconf_notify+0x996/0x1010 net/ipv6/addrconf.c:3667
notifier_call_chain+0x197/0x390 kernel/notifier.c:93
call_netdevice_notifiers_extack net/core/dev.c:2064 [inline]
call_netdevice_notifiers net/core/dev.c:2078 [inline]
__dev_notify_flags+0x18e/0x2e0 net/core/dev.c:-1
dev_change_flags+0xe8/0x1a0 net/core/dev.c:8750
do_setlink+0xc74/0x3fb0 net/core/rtnetlink.c:2905
__rtnl_newlink net/core/rtnetlink.c:3703 [inline]
rtnl_newlink+0x175b/0x2020 net/core/rtnetlink.c:3750
rtnetlink_rcv_msg+0x7c7/0xf10 net/core/rtnetlink.c:6475
netlink_rcv_skb+0x216/0x480 net/netlink/af_netlink.c:2555
netlink_unicast_kernel net/netlink/af_netlink.c:1330 [inline]
netlink_unicast+0x751/0x8d0 net/netlink/af_netlink.c:1356
netlink_sendmsg+0x8c1/0xbe0 net/netlink/af_netlink.c:1904
sock_sendmsg_nosec net/socket.c:730 [inline]
__sock_sendmsg net/socket.c:745 [inline]
__sys_sendto+0x46a/0x620 net/socket.c:2201
__do_sys_sendto net/socket.c:2213 [inline]
__se_sys_sendto net/socket.c:2209 [inline]
__x64_sys_sendto+0xde/0xf0 net/socket.c:2209
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x55/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x68/0xd2
The buggy address belongs to the object at ffff88805ec27800
which belongs to the cache kmalloc-512 of size 512
The buggy address is located 42 bytes inside of
freed 512-byte region [ffff88805ec27800, ffff88805ec27a00)
The buggy address belongs to the physical page:
page:ffffea00017b0900 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x5ec24
head:ffffea00017b0900 order:2 entire_mapcount:0 nr_pages_mapped:0 pincount:0
anon flags: 0xfff00000000840(slab|head|node=0|zone=1|lastcpupid=0x7ff)
page_type: 0xffffffff()
raw: 00fff00000000840 ffff888017841c80 0000000000000000 dead000000000001
raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 2, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 3495, tgid 3495 (kworker/u4:10), ts 90280099276, free_ts 27313282697
set_page_owner include/linux/page_owner.h:31 [inline]
post_alloc_hook+0x1cd/0x210 mm/page_alloc.c:1554
prep_new_page mm/page_alloc.c:1561 [inline]
get_page_from_freelist+0x195c/0x19f0 mm/page_alloc.c:3191
__alloc_pages+0x1e3/0x460 mm/page_alloc.c:4457
alloc_slab_page+0x5d/0x170 mm/slub.c:1876
allocate_slab mm/slub.c:2023 [inline]
new_slab+0x87/0x2e0 mm/slub.c:2076
___slab_alloc+0xc6d/0x12f0 mm/slub.c:3230
__slab_alloc mm/slub.c:3329 [inline]
__slab_alloc_node mm/slub.c:3382 [inline]
slab_alloc_node mm/slub.c:3475 [inline]
__kmem_cache_alloc_node+0x1a2/0x260 mm/slub.c:3524
kmalloc_trace+0x2a/0xe0 mm/slab_common.c:1098
kmalloc include/linux/slab.h:600 [inline]
kzalloc include/linux/slab.h:721 [inline]
mca_alloc net/ipv6/mcast.c:880 [inline]
__ipv6_dev_mc_inc+0x413/0xac0 net/ipv6/mcast.c:936
addrconf_join_solict net/ipv6/addrconf.c:2206 [inline]
addrconf_dad_begin net/ipv6/addrconf.c:4067 [inline]
addrconf_dad_work+0x3c5/0x14e0 net/ipv6/addrconf.c:4192
process_one_work kernel/workqueue.c:2634 [inline]
process_scheduled_works+0xa45/0x15b0 kernel/workqueue.c:2711
worker_thread+0xa55/0xfc0 kernel/workqueue.c:2792
kthread+0x2fa/0x390 kernel/kthread.c:388
ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:152
ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:293
page last free stack trace:
reset_page_owner include/linux/page_owner.h:24 [inline]
free_pages_prepare mm/page_alloc.c:1154 [inline]
free_unref_page_prepare+0x7ce/0x8e0 mm/page_alloc.c:2336
free_unref_page+0x32/0x2e0 mm/page_alloc.c:2429
free_contig_range+0xa1/0x160 mm/page_alloc.c:6369
destroy_args+0x87/0x770 mm/debug_vm_pgtable.c:1015
debug_vm_pgtable+0x3cc/0x410 mm/debug_vm_pgtable.c:1395
do_one_initcall+0x1fd/0x750 init/main.c:1238
do_initcall_level+0x137/0x1f0 init/main.c:1300
do_initcalls+0x69/0xd0 init/main.c:1316
kernel_init_freeable+0x3d2/0x570 init/main.c:1553
kernel_init+0x1d/0x1c0 init/main.c:1443
ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:152
ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:293
Memory state around the buggy address:
ffff88805ec27700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff88805ec27780: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff88805ec27800: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff88805ec27880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff88805ec27900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================
----------------
Code disassembly (best guess):
0: 0f 48 8d 65 d8 5b 41 cmovs 0x415bd865(%rbp),%ecx
7: 5c pop %rsp
8: 41 5d pop %r13
a: 41 5e pop %r14
c: 41 5f pop %r15
e: 5d pop %rbp
f: c3 ret
10: e8 b2 51 0f 09 call 0x90f51c7
15: 66 90 xchg %ax,%ax
17: 41 57 push %r15
19: 41 56 push %r14
1b: 53 push %rbx
1c: eb 11 jmp 0x2f
1e: e8 04 fa 18 09 call 0x918fa27
23: e8 0f 33 2e 00 call 0x2e3337
28: fb sti
29: 5b pop %rbx
* 2a: 41 5e pop %r14 <-- trapping instruction
2c: 41 5f pop %r15
2e: c3 ret
2f: f3 0f 1e fa endbr64
33: 49 be 00 00 00 00 00 movabs $0xdffffc0000000000,%r14
3a: fc ff df
3d: 49 89 ff mov %rdi,%r15