CVE-2026-74563

rds: tcp: hold the RCU lock across ipv6_chk_addr() in rds_tcp_laddr_check()

State
Published
Severity
7.8 High
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

rds: tcp: hold the RCU lock across ipv6_chk_addr() in rds_tcp_laddr_check()

rds_tcp_laddr_check() looks up a scoped IPv6 interface with dev_get_by_index_rcu(), drops the RCU read-side lock, and only then passes the bare struct net_device * into ipv6_chk_addr().

dev_get_by_index_rcu() only keeps the device alive within the same RCU read-side section. After rcu_read_unlock(), a concurrent RTM_DELLINK can free the net_device; ipv6_chk_addr() then dereferences the stale pointer in __ipv6_chk_addr_and_flags() (e.g. l3mdev_master_dev_rcu(dev)), reading freed memory.

Keep the RCU read-side lock held across the ipv6_chk_addr() call instead of dropping it right after the lookup, so the device cannot be freed while it is in use.

BUG: KASAN: slab-use-after-free in __ipv6_chk_addr_and_flags (... net/ipv6/addrconf.c:1998) Read of size 8 at addr ffff8880106ec000 by task exploit/153 Call Trace: ... kasan_report (mm/kasan/report.c:595) __ipv6_chk_addr_and_flags (... net/ipv6/addrconf.c:1998) ipv6_chk_addr (net/ipv6/addrconf.c:2031 net/ipv6/addrconf.c:1972) rds_tcp_laddr_check (net/rds/tcp.c:370) rds_bind (net/rds/bind.c:248) __sys_bind (net/socket.c:1920) __x64_sys_bind (net/socket.c:1956) do_syscall_64 (arch/x86/entry/syscall_64.c:63) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before f8a8977af2134a1d91e5f9773cb7d9d53278c830Affected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before ba95bce5dfe6e2ef602a87e0557225f2934ccb5cAffected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before c4933624a6f416ecfcc31ab58d585da1207a0597Affected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before 76dd48886eeeb5fcf2b837d2f4c3d17eebeac9efAffected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before f0d1fb05d70c8a561cd8d0473bcacafa2fc137ffAffected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before b1d480fce05f857dc438080cd8c9244b84a83494Affected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before 8398bc477d3cb3e2b018a5aaac2bec0f69acda30Affected
  • eee2fa6ab3225192d6d894c54a6fb02ac9efdff6 to before 78f75d632f74b8de0f081a128588f7c37d0d1164Affected
LinuxLinux
  • 4.19Affected
  • before 4.19Not affected
  • 5.10.265 through 5.10.*Not affected
  • 5.15.216 through 5.15.*Not affected
  • 6.1.183 through 6.1.*Not affected
  • 6.6.151 through 6.6.*Not affected
  • 6.12.103 through 6.12.*Not affected
  • 6.18.44 through 6.18.*Not affected
  • 7.1.8 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.