igmp: convert struct ip_sf_list to RCU

Summary

CVECVE-2026-98103
StatePUBLISHED
AssignerLinux
Source PriorityCVE Program / NVD first with legacy fallback
Published2026-09-25 11:17:40 UTC
Updated2026-09-25 11:17:40 UTC
DescriptionIn the Linux kernel, the following vulnerability has been resolved: igmp: convert struct ip_sf_list to RCU Commit 23d2b94043ca ("igmp: Add ip_mc_list lock in ip_check_mc_rcu") added spin_lock_bh(&im->lock) to ip_check_mc_rcu() to prevent a use-after-free while iterating im->sources during concurrent deletions. However, ip_check_mc_rcu() is called from RCU read-side critical sections in packet receive and route lookup fast paths (e.g. __mkroute_output(), ip_route_input_rcu(), and __udp4_lib_rcv()). When igmpv3_send_cr() or igmpv3_send_report() holds &pmc->lock and calls add_grec() -> igmpv3_newpack() -> ip_route_output_ports(), an XFRM policy matching a multicast destination triggers xfrm_tmpl_resolve_one() -> xfrm4_get_saddr() -> __mkroute_output() -> ip_check_mc_rcu(). This attempts to acquire &im->lock while &pmc->lock is already held on the same CPU, triggering a lockdep recursive locking warning / deadlock. Fix this by converting IPv4 struct ip_sf_list to RCU, mirroring the IPv6 implementation in net/ipv6/mcast.c: 1. Add struct rcu_head to struct ip_sf_list and annotate sf_next, sources, and tomb as __rcu pointers. 2. Use rcu_assign_pointer() and kfree_rcu() for list updates and deletions. 3. Remove spin_lock_bh(&im->lock) from ip_check_mc_rcu() and traverse im->sources locklessly with for_each_psf_rcu(), reading and writing counter fields with READ_ONCE() and WRITE_ONCE(). Note: RCU conversion of /proc/net/mcfilter will be done in a separate patch.

Risk And Classification

EPSS: 0.001680000 probability, percentile 0.054050000 (date 2026-09-26)

Vendor Declared Affected Products

SourceVendorProductVersionPlatforms
CNA Linux Linux affected 23d2b94043ca8835bd1e67749020e839f396a1c2 f5182dfad54277267a8cb0c004a9cd4cf35aeebb git Not specified
CNA Linux Linux affected 23d2b94043ca8835bd1e67749020e839f396a1c2 d3011d1f293478c730aa0870490afa145c37600e git Not specified
CNA Linux Linux affected 23d2b94043ca8835bd1e67749020e839f396a1c2 e3206419bdb04e2087d8cc6be324df8639b3fac5 git Not specified
CNA Linux Linux affected 23d2b94043ca8835bd1e67749020e839f396a1c2 2987ee196c88dbde0463dc87d5fb209c684e34a2 git Not specified
CNA Linux Linux affected b24065948ae6c48c9e20891f8cfe9850f1d748be git Not specified
CNA Linux Linux affected e9924c4204ede999b0515fd31a370a1e27f676bc git Not specified
CNA Linux Linux affected 78967749984cf3614de346c90f3e259ff8272735 git Not specified
CNA Linux Linux affected 4768973dffed4d0126854514335ed4fe87bec1ab git Not specified
CNA Linux Linux affected d84708451d9041dff8a81e3718f821f12d2eb6c5 git Not specified
CNA Linux Linux affected ddd7e8b7b84836c584a284b98ca9bd7a348a0558 git Not specified
CNA Linux Linux affected 961447ff60291b91e27d5c32fa549c1411ad3b70 git Not specified
CNA Linux Linux affected d1a3c6d5925a8d00a32c5ef2d674dd9c0ce89c95 git Not specified
CNA Linux Linux affected 4.4.284 4.5 semver Not specified
CNA Linux Linux affected 4.9.283 4.10 semver Not specified
CNA Linux Linux affected 4.14.247 4.15 semver Not specified
CNA Linux Linux affected 4.19.207 4.20 semver Not specified
CNA Linux Linux affected 5.4.145 5.5 semver Not specified
CNA Linux Linux affected 5.10.64 5.11 semver Not specified
CNA Linux Linux affected 5.13.16 5.14 semver Not specified
CNA Linux Linux affected 5.14.3 5.15 semver Not specified
CNA Linux Linux affected 5.15 Not specified
CNA Linux Linux unaffected 5.15 semver Not specified
CNA Linux Linux unaffected 6.12.111 6.12.* semver Not specified
CNA Linux Linux unaffected 6.18.53 6.18.* semver Not specified
CNA Linux Linux unaffected 7.2.7 7.2.* semver Not specified
CNA Linux Linux unaffected 7.3-rc2 * original_commit_for_fix Not specified

References

ReferenceSourceLinkTags
git.kernel.org/stable/c/f5182dfad54277267a8cb0c004a9cd4cf35aeebb 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/e3206419bdb04e2087d8cc6be324df8639b3fac5 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/d3011d1f293478c730aa0870490afa145c37600e 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/2987ee196c88dbde0463dc87d5fb209c684e34a2 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
CVE Program record CVE.ORG www.cve.org canonical
NVD vulnerability detail NVD nvd.nist.gov canonical, analysis

© CVE.report 2026

Use of this information constitutes acceptance for use in an AS IS condition. There are NO warranties, implied or otherwise, with regard to this information or its use. Any use of this information is at the user's risk. It is the responsibility of user to evaluate the accuracy, completeness or usefulness of any information, opinion, advice or other content. EACH USER WILL BE SOLELY RESPONSIBLE FOR ANY consequences of his or her direct or indirect use of this web site. ALL WARRANTIES OF ANY KIND ARE EXPRESSLY DISCLAIMED. This site will NOT BE LIABLE FOR ANY DIRECT, INDIRECT or any other kind of loss.

CVE, CWE, and OVAL are registred trademarks of The MITRE Corporation and the authoritative source of CVE content is MITRE's CVE web site. This site includes MITRE data granted under the following license.

Free CVE JSON API cve.report/api

CVE.report and Source URL Uptime Status status.cve.report