๐Ÿ” CVE Alert

CVE-2026-98103

UNKNOWN 0.0

igmp: convert struct ip_sf_list to RCU

CVSS Score
0.0
EPSS Score
0.0%
EPSS Percentile
0th

In 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.

Vendor linux
Product linux
Ecosystems
Industries
Technology
Published Sep 25, 2026
Stay Ahead of the Next One

Get instant alerts for linux linux

Be the first to know when new unknown vulnerabilities affecting linux linux are published โ€” delivered to Slack, Telegram or Discord.

Get Free Alerts โ†’ Free ยท No credit card ยท 60 sec setup

Affected Versions

Linux / Linux
23d2b94043ca8835bd1e67749020e839f396a1c2 < f5182dfad54277267a8cb0c004a9cd4cf35aeebb 23d2b94043ca8835bd1e67749020e839f396a1c2 < d3011d1f293478c730aa0870490afa145c37600e 23d2b94043ca8835bd1e67749020e839f396a1c2 < e3206419bdb04e2087d8cc6be324df8639b3fac5 23d2b94043ca8835bd1e67749020e839f396a1c2 < 2987ee196c88dbde0463dc87d5fb209c684e34a2 b24065948ae6c48c9e20891f8cfe9850f1d748be e9924c4204ede999b0515fd31a370a1e27f676bc 78967749984cf3614de346c90f3e259ff8272735 4768973dffed4d0126854514335ed4fe87bec1ab d84708451d9041dff8a81e3718f821f12d2eb6c5 ddd7e8b7b84836c584a284b98ca9bd7a348a0558 961447ff60291b91e27d5c32fa549c1411ad3b70 d1a3c6d5925a8d00a32c5ef2d674dd9c0ce89c95 4.4.284 < 4.5 4.9.283 < 4.10 4.14.247 < 4.15 4.19.207 < 4.20 5.4.145 < 5.5 5.10.64 < 5.11 5.13.16 < 5.14 5.14.3 < 5.15
Linux / Linux
5.15

References

NVD โ†— CVE.org โ†— EPSS Data โ†—
git.kernel.org: https://git.kernel.org/stable/c/f5182dfad54277267a8cb0c004a9cd4cf35aeebb git.kernel.org: https://git.kernel.org/stable/c/d3011d1f293478c730aa0870490afa145c37600e git.kernel.org: https://git.kernel.org/stable/c/e3206419bdb04e2087d8cc6be324df8639b3fac5 git.kernel.org: https://git.kernel.org/stable/c/2987ee196c88dbde0463dc87d5fb209c684e34a2