---
id: CVE-2026-98101
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ipv6: mcast: use copy-on-write RCU updates in ip6_mc_source()

  pmc->sflist is read locklessly under rcu_read_lock() by
  inet6_mc_check() during packet reception in the U…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ipv6: mcast: use copy-on-write RCU updates in ip6_mc_source()

  pmc->sflist is read locklessly under rcu_read_lock() by
  inet6_mc_check() during packet reception in the U…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 882ba1f73c06831f2a21044ebd8864c485ac04f2 <
    2c2091e2ee93049fc513ad1e6c99d8b6c809f467
  - >-
    Linux >= 882ba1f73c06831f2a21044ebd8864c485ac04f2 <
    20db91a052332ef5552bd2f651ffb9db911cf67b
  - >-
    Linux >= 882ba1f73c06831f2a21044ebd8864c485ac04f2 <
    c073d1b070f171d206b19c98d71739a97f15b3f1
  - Linux 47c75e3923c8d562fea8daf0ccf31546a7bef0ea
  - Linux >= 5.10.261 < 5.11
  - Linux 5.13
published: '2026-09-25'
updated: '2026-09-25'
sourceUpdated: '2026-09-25T11:17:39.830'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-98101'
references:
  - url: 'https://git.kernel.org/stable/c/20db91a052332ef5552bd2f651ffb9db911cf67b'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/2c2091e2ee93049fc513ad1e6c99d8b6c809f467'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/c073d1b070f171d206b19c98d71739a97f15b3f1'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-25T11:06:38.827Z'
---

## Overview

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

ipv6: mcast: use copy-on-write RCU updates in ip6_mc_source()

pmc->sflist is read locklessly under rcu_read_lock() by
inet6_mc_check() during packet reception in the UDP and RAW
multicast receive paths.

ip6_mc_source() mutated psl->sl_addr and psl->sl_count in-place
when adding or removing a source filter. Additionally, when expanding
the filter buffer, newpsl was published via rcu_assign_pointer()
before writing the new source into the array.

Because 16-byte struct in6_addr writes are not atomic and array
shifting is not synchronized with RCU readers, concurrent readers in
inet6_mc_check() could read torn IPv6 addresses or observe
duplicated/missed source entries.

Fix this by switching ip6_mc_source() to copy-on-write RCU updates:
allocate and fully populate newpsl before publishing it via
rcu_assign_pointer(), and reclaim the old filter via kfree_rcu(),
matching ip6_mc_msfilter().

Also remove the now unused IP6_SFBLOCK macro.

## Remediation

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