# CVE-2025-38324: mpls: Use rcu_dereference_rtnl() in mpls_route_input_rcu().

Status: published. Published: 2025-07-10. Updated: 2026-11-05.

In the Linux kernel, the 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 is only updated under RTNL.

Let's use rcu_dereference_rtnl() in mpls_route_input_rcu() to
silence the splat.

[0]:
WARNING: suspicious RCU usage
6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 #0 Not tainted
 ----------------------------
net/mpls/af_mpls.c:84 suspicious 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]
 #0: ffffffff9012a3e8 (rtnl_mutex){+.+.}-{4:4}, at: rtnetlink_rcv_msg+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>
 __dump_stack lib/dump_stack.c:94 [inline]
 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 [inline]
 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 [inline]
 __sock_sendmsg net/socket.c:727 [inline]
 ____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 [inline]
 __se_sys_sendmmsg net/socket.c:2733 [inline]
 __x64_sys_sendmmsg+0x9c/0x100 net/socket.c:2733
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xcd/0x230 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+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 ORIG_RAX: 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>

## Remediation

No remediation reported in collected sources

## Affected products and versions

- Linux / Linux: ≥ 0189197f441602acdca3f97750d392a895b778fd; < 2919297b18e5a5fb7e643f9e32c12c0b17cce1be (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < 36af82f25fbdcd719eb947c15ea874bf80bcf229 (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < d8cd847fb8626872631cc22d44be5127b4ebfb74 (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < 49b8a9d7d44401a186e20b1aaf591d2e62727aeb (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < a060781640012d5d5105072f4c44ed6ad6830ef9 (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < 517bc6836ee9fcffe2539f6f6aa3fdd9c7a7ae73 (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < f19cbd84e645e39bc3228e1191bb151ef0ffac8c (affected, git); ≥ 0189197f441602acdca3f97750d392a895b778fd; < 6dbb0d97c5096072c78a6abffe393584e57ae945 (affected, git). Source: CNA: Linux
- Linux / Linux: 4.1 (affected); ≥ 0; < 4.1 (unaffected, semver); ≥ 5.4.295; ≤ 5.4.* (unaffected, semver); ≥ 5.10.239; ≤ 5.10.* (unaffected, semver); ≥ 5.15.186; ≤ 5.15.* (unaffected, semver); ≥ 6.1.142; ≤ 6.1.* (unaffected, semver); ≥ 6.6.95; ≤ 6.6.* (unaffected, semver); ≥ 6.12.35; ≤ 6.12.* (unaffected, semver); ≥ 6.15.4; ≤ 6.15.* (unaffected, semver); ≥ 6.16; ≤ * (unaffected, original_commit_for_fix). Source: CNA: Linux

## Severity and prioritization

- CISA KEV: No listing in collected sources

- EPSS: 0.22% as of 2026-11-05; percentile 12.31%

- SSVC: exploitation none; automatable no; technical impact partial; source ADP: CISA-ADP

- Weaknesses: Not reported

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://git.kernel.org/stable/c/2919297b18e5a5fb7e643f9e32c12c0b17cce1be (CNA: Linux)

- https://git.kernel.org/stable/c/36af82f25fbdcd719eb947c15ea874bf80bcf229 (CNA: Linux)

- https://git.kernel.org/stable/c/d8cd847fb8626872631cc22d44be5127b4ebfb74 (CNA: Linux)

- https://git.kernel.org/stable/c/49b8a9d7d44401a186e20b1aaf591d2e62727aeb (CNA: Linux)

- https://git.kernel.org/stable/c/a060781640012d5d5105072f4c44ed6ad6830ef9 (CNA: Linux)

- https://git.kernel.org/stable/c/517bc6836ee9fcffe2539f6f6aa3fdd9c7a7ae73 (CNA: Linux)

- https://git.kernel.org/stable/c/f19cbd84e645e39bc3228e1191bb151ef0ffac8c (CNA: Linux)

- https://git.kernel.org/stable/c/6dbb0d97c5096072c78a6abffe393584e57ae945 (CNA: Linux)

- https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html (ADP: CVE)

- https://lists.debian.org/debian-lts-announce/2025/10/msg00007.html (ADP: CVE)

## Provenance

- CNA: Linux: https://www.cve.org/CVERecord?id=CVE-2025-38324; retrieved 2026-11-05; source updated 2026-11-05

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2025-38324; retrieved 2026-11-05; source updated Not reported

Revision: 3dcdad65a789576a6aafa6cb62488a3a4ccbe931b355ef731ac76ba3e2a0698b

Canonical: https://y2.dev/cve/CVE-2025-38324

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.