---
id: CVE-2026-98099
title: |-
  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_t…
summary: |-
  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_t…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 456b61bca8ee324ab6c18b065e632c9a8c88aa39 <
    2e46b0c9fcf7e10b64ce1630b925f47918d1f7f6
  - >-
    Linux >= 456b61bca8ee324ab6c18b065e632c9a8c88aa39 <
    0c8f56c583c3250408367880c98e4d6fbc929315
  - Linux 2.6.38
published: '2026-09-25'
updated: '2026-09-25'
sourceUpdated: '2026-09-25T11:17:39.723'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-98099'
references:
  - url: 'https://git.kernel.org/stable/c/0c8f56c583c3250408367880c98e4d6fbc929315'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/2e46b0c9fcf7e10b64ce1630b925f47918d1f7f6'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-25T11:06:38.830Z'
---

## Overview

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().

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
