CVE-2026-98102: ipv6: mcast: fix RCU list diversion in ip6_mc_del1_src()

Published Sep 25, 2026
·
Updated

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

ipv6: mcast: fix RCU list diversion in ip6mcdel1src()

When removing a source filter whose count reaches zero, ip6mcdel1src() unlinks psf from pmc->mcasources. If the filter was previously active, the code moved psf directly into pmc->mcatomb by updating psf->sfnext.

Because pmc->mcasources is traversed locklessly under RCU (e.g. by ipv6chkmcastaddr()), mutating psf->sfnext before a grace period elapses diverts concurrent readers to the tombstone list. Consequently, readers miss remaining active sources in pmc->mcasources and improperly examine deleted tombstone entries.

Fix this by allocating a new tombstone node for pmc->mcatomb (as done in sfsetstate()) and retiring the original psf via kfreercu().

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 25, 2026
CVE Published
via MITRE·10:35 AM
Data Sourced
via MITRE·10:35 AM
Description
Data Sourced
via NVD·11:17 AM
Description

Frequently Asked Questions

1

What systems are exposed to this issue?

Systems running the Linux kernel with IPv6 multicast source filtering in use are exposed to the affected code path. The issue involves concurrent RCU-based traversal of IPv6 multicast source lists while a source filter is removed.

2

What conditions are required to trigger the incorrect behavior?

A source filter must be removed such that its count reaches zero, and the filter must previously have been active. A concurrent lockless RCU reader, such as ipv6_chk_mcast_addr(), must traverse the multicast source list during the removal.

3

What is the observable impact of the race?

Concurrent readers can be diverted from the active source list to the tombstone list. This can cause them to miss remaining active sources and examine source entries that were deleted.

4

How does the fix mitigate the issue?

The fix creates a separate tombstone node instead of repurposing the removed active-source node. The original node is retired with kfree_rcu(), preventing its next-pointer from being changed before existing RCU readers have completed.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203