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

ipv6: mcast: use rcu_assign_pointer() for __rcu list updates

Several places in net/ipv6/mcast.c update RCU-protected lists
(np->ipv6_mc_list, idev->mc_list, idev->mc_tomb) using direct pointer
assignments instead of rcu_assign_pointer():

1. In __ipv6_dev_mc_dec(), unlinking a group from idev->mc_list did:
*map = ma->next;
without rcu_assign_pointer() while concurrent readers traverse
idev->mc_list locklessly under rcu_read_lock().
2. In ipv6_sock_mc_drop() and __ipv6_sock_mc_close(), unlinking a group
from np->ipv6_mc_list directly assigned *lnk = mc_lst->next and
np->ipv6_mc_list = mc_lst->next without rcu_assign_pointer(), racing
with lockless readers in inet6_mc_check().
3. In __ipv6_sock_mc_join(), mc_lst->next was initialized to
np->ipv6_mc_list via raw assignment before publishing mc_lst.
4. In mld_del_delrec() and __ipv6_dev_mc_inc(), __rcu source pointers
passed into rcu_assign_pointer() lacked explicit dereference helpers.

Fix these by consistently using rcu_assign_pointer() along with
mc_dereference() / sock_dereference().
Published: 2026-09-25
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: RCU race in IPv6 multicast list updates may lead to memory corruption or system instability
Action: Immediate Patch
AI Analysis

Impact

The flaw occurs when the kernel updates RCU‑protected IPv6 multicast lists with plain pointer assignments instead of the required rcu_assign_pointer function. This race allows a concurrent reader to access a list entry that may have been unlinked or reordered, resulting in a use‑after‑free or corrupted traversal of the list. The affected code paths include __ipv6_dev_mc_dec, ipv6_sock_mc_drop, __ipv6_sock_mc_close, __ipv6_sock_mc_join, and other multicast management functions.

Affected Systems

The issue is present in the Linux kernel itself; any build that has not incorporated the patch that switches all multicast list updates to rcu_assign_pointer is affected. Users should verify whether their running kernel predates the commit referenced in the provided Git URLs. All Linux distributions shipping kernels without this change are susceptible to the race condition.

Risk and Exploitability

Exploitation requires a timing race between a process that modifies multicast list links and another that reads those lists under rcu_read_lock. No public exploits are known and EPSS is unavailable, indicating a low exploitation probability. If an attacker succeeds, the race could cause kernel memory corruption, potentially leading to a crash or privilege escalation. The vulnerability is not listed in the CISA KEV catalog, reinforcing its lower threat grade. Prompt patching is advised to mitigate the risk.

Generated by OpenCVE AI on September 25, 2026 at 16:53 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the Linux kernel to the latest version that contains the rcu_assign_pointer fix for IPv6 multicast list updates
  • Verify that the running kernel includes the patch by checking the commit or kernel version known to incorporate the change
  • Restart networking services or reboot the system to ensure the changes take effect and monitor system logs for any RCU‑related errors

Generated by OpenCVE AI on September 25, 2026 at 16:53 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 15 Oct 2026 13:30:00 +0000


Fri, 25 Sep 2026 17:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-416

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: ipv6: mcast: use rcu_assign_pointer() for __rcu list updates Several places in net/ipv6/mcast.c update RCU-protected lists (np->ipv6_mc_list, idev->mc_list, idev->mc_tomb) using direct pointer assignments instead of rcu_assign_pointer(): 1. In __ipv6_dev_mc_dec(), unlinking a group from idev->mc_list did: *map = ma->next; without rcu_assign_pointer() while concurrent readers traverse idev->mc_list locklessly under rcu_read_lock(). 2. In ipv6_sock_mc_drop() and __ipv6_sock_mc_close(), unlinking a group from np->ipv6_mc_list directly assigned *lnk = mc_lst->next and np->ipv6_mc_list = mc_lst->next without rcu_assign_pointer(), racing with lockless readers in inet6_mc_check(). 3. In __ipv6_sock_mc_join(), mc_lst->next was initialized to np->ipv6_mc_list via raw assignment before publishing mc_lst. 4. In mld_del_delrec() and __ipv6_dev_mc_inc(), __rcu source pointers passed into rcu_assign_pointer() lacked explicit dereference helpers. Fix these by consistently using rcu_assign_pointer() along with mc_dereference() / sock_dereference().
Title ipv6: mcast: use rcu_assign_pointer() for __rcu list updates
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-15T10:12:15.976Z

Reserved: 2026-09-25T10:19:56.077Z

Link: CVE-2026-98099

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Undergoing Analysis

Published: 2026-09-25T11:17:39.723

Modified: 2026-10-15T11:18:11.347

Link: CVE-2026-98099

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T04:00:04Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE-416

    Use After Free