Descripción
In the Linux kernel, following vulnerability has been resolved:
mpls: Use rcu_dereference_rtnl() in mpls_route_input_rcu().
As syzbot reported [0], mpls_route_input_rcu() can be called
from mpls_getroute(), where is under RTNL.
net->mpls.platform_label only updated RTNL.
Let's use to
silence splat.
[0]:
WARNING: suspicious RCU usage
6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 #0 Not tainted
----------------------------
net/mpls/af_mpls.c:84 rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks 1
1 lock held by syz.2.4451/17730:
#0: ffffffff9012a3e8 (rtnl_mutex){+.+.}-{4:4}, at: rtnl_lock net/core/rtnetlink.c:80 [inline]
rtnetlink_rcv_msg+0x371/0xe90 net/core/rtnetlink.c:6961
stack backtrace:
CPU: 1 UID: 0 PID: 17730 Comm: syz.2.4451 tainted 6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 PREEMPT(full)
Hardware name: Google Compute Engine/Google Engine, BIOS 05/07/2025
Call Trace:
__dump_stack lib/dump_stack.c:94 dump_stack_lvl+0x16c/0x1f0 lib/dump_stack.c:120
lockdep_rcu_suspicious+0x166/0x260 kernel/locking/lockdep.c:6865
mpls_route_input_rcu+0x1d4/0x200 net/mpls/af_mpls.c:84
mpls_getroute+0x621/0x1ea0 net/mpls/af_mpls.c:2381
rtnetlink_rcv_msg+0x3c9/0xe90 net/core/rtnetlink.c:6964
netlink_rcv_skb+0x16d/0x440 net/netlink/af_netlink.c:2534
netlink_unicast_kernel net/netlink/af_netlink.c:1313 netlink_unicast+0x53a/0x7f0 net/netlink/af_netlink.c:1339
netlink_sendmsg+0x8d1/0xdd0 net/netlink/af_netlink.c:1883
sock_sendmsg_nosec net/socket.c:712 __sock_sendmsg net/socket.c:727 ____sys_sendmsg+0xa98/0xc70 net/socket.c:2566
___sys_sendmsg+0x134/0x1d0 net/socket.c:2620
__sys_sendmmsg+0x200/0x420 net/socket.c:2709
__do_sys_sendmmsg net/socket.c:2736 __se_sys_sendmmsg net/socket.c:2733 __x64_sys_sendmmsg+0x9c/0x100 net/socket.c:2733
do_syscall_x64 arch/x86/entry/syscall_64.c:63 do_syscall_64+0xcd/0x230 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f0a2818e969
Code: ff c3 66 2e 0f 1f 84 00 40 48 89 f8 f7 d6 ca 4d c2 c8 4c 8b 24 08 05 <48> 3d 01 f0 73 c7 c1 a8 d8 64 48
RSP: 002b:00007f0a28f52038 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
RAX: ffffffffffffffda RBX: 00007f0a283b5fa0 RCX: 00007f0a2818e969
RDX: 0000000000000003 RSI: 0000200000000080 RDI: 0000000000000003
RBP: 00007f0a28210ab1 R08: 0000000000000000 R09: 0000000000000000
R10: R11: 0000000000000246 R12: 0000000000000000
R13: R14: R15: 00007ffce5e9f268
https://git.kernel.org/stable/c/2919297b18e5a5fb7e643f9e32c12c0b17cce1be
https://git.kernel.org/stable/c/36af82f25fbdcd719eb947c15ea874bf80bcf229
https://git.kernel.org/stable/c/49b8a9d7d44401a186e20b1aaf591d2e62727aeb
https://git.kernel.org/stable/c/517bc6836ee9fcffe2539f6f6aa3fdd9c7a7ae73
https://git.kernel.org/stable/c/6dbb0d97c5096072c78a6abffe393584e57ae945
https://git.kernel.org/stable/c/a060781640012d5d5105072f4c44ed6ad6830ef9
https://git.kernel.org/stable/c/d8cd847fb8626872631cc22d44be5127b4ebfb74
https://git.kernel.org/stable/c/f19cbd84e645e39bc3228e1191bb151ef0ffac8c