In the Linux kernel, the following vulnerability has been resolved:
mpls: Use rcudereferencertnl() in mplsrouteinput_rcu().
As syzbot reported [0], mplsrouteinputrcu() can be called from mplsgetroute(), where is under RTNL.
net->mpls.platform_label is only updated under RTNL.
Let's use rcudereferencertnl() in mplsrouteinput_rcu() to silence the splat.
6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 #0 Not tainted
net/mpls/afmpls.c:84 suspicious rcudereference_check() usage!
other info that might help us debug this:
rcuscheduleractive = 2, debuglocks = 1 1 lock held by syz.2.4451/17730: #0: ffffffff9012a3e8 (rtnlmutex){+.+.}-{4:4}, at: rtnllock net/core/rtnetlink.c:80 [inline] #0: ffffffff9012a3e8 (rtnlmutex){+.+.}-{4:4}, at: rtnetlinkrcvmsg+0x371/0xe90 net/core/rtnetlink.c:6961
stack backtrace: CPU: 1 UID: 0 PID: 17730 Comm: syz.2.4451 Not tainted 6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025 Call Trace: <TASK> dumpstack lib/dumpstack.c:94 [inline] dumpstacklvl+0x16c/0x1f0 lib/dumpstack.c:120 lockdeprcususpicious+0x166/0x260 kernel/locking/lockdep.c:6865 mplsrouteinputrcu+0x1d4/0x200 net/mpls/afmpls.c:84 mplsgetroute+0x621/0x1ea0 net/mpls/afmpls.c:2381 rtnetlinkrcvmsg+0x3c9/0xe90 net/core/rtnetlink.c:6964 netlinkrcvskb+0x16d/0x440 net/netlink/afnetlink.c:2534 netlinkunicastkernel net/netlink/afnetlink.c:1313 [inline] netlinkunicast+0x53a/0x7f0 net/netlink/afnetlink.c:1339 netlinksendmsg+0x8d1/0xdd0 net/netlink/afnetlink.c:1883 socksendmsgnosec net/socket.c:712 [inline] _socksendmsg net/socket.c:727 [inline] _syssendmsg+0xa98/0xc70 net/socket.c:2566 _syssendmsg+0x134/0x1d0 net/socket.c:2620 _syssendmmsg+0x200/0x420 net/socket.c:2709 _dosyssendmmsg net/socket.c:2736 [inline] _sesyssendmmsg net/socket.c:2733 [inline] _x64syssendmmsg+0x9c/0x100 net/socket.c:2733 dosyscallx64 arch/x86/entry/syscall64.c:63 [inline] dosyscall64+0xcd/0x230 arch/x86/entry/syscall64.c:94 entrySYSCALL64afterhwframe+0x77/0x7f RIP: 0033:0x7f0a2818e969 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f0a28f52038 EFLAGS: 00000246 ORIGRAX: 0000000000000133 RAX: ffffffffffffffda RBX: 00007f0a283b5fa0 RCX: 00007f0a2818e969 RDX: 0000000000000003 RSI: 0000200000000080 RDI: 0000000000000003 RBP: 00007f0a28210ab1 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 00007f0a283b5fa0 R15: 00007ffce5e9f268 </TASK>