{"api_version":"1","generated_at":"2026-10-02T23:34:21+00:00","cve":"CVE-2026-98026","urls":{"html":"https://cve.report/CVE-2026-98026","api":"https://cve.report/api/cve/CVE-2026-98026.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98026","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98026"},"summary":{"title":"net: bridge: mcast: properly convert mglist to rcu","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: mcast: properly convert mglist to rcu\n\nSashiko reported a bug [1] that br_multicast_del_port_group unlists the\nport group not using proper rcu helper that preserves the next pointer and\nafter that immediately frees the port group without waiting for rcu grace\nperiod. The only rcu walker of mglist is br_multicast_list_adjacent() and\nit turns out that function has always been buggy because mglist was never\nproperly converted to RCU. Fix it by converting it to rcu and moving its\ninitialization after eth_addr's. Initializing p->next can use\nRCU_INIT_POINTER because we have a barrier from the hlist_add_head_rcu call\nlater, besides we're initializing an unpublished structure anyway.\n\n[1] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260826014200.362304-1-littleddfu%40gmail.com","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-25 11:17:31","updated_at":"2026-09-25 11:17:31"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/38ab2a435001a3c4dbeb70a52f5921e1ccd66f55","name":"https://git.kernel.org/stable/c/38ab2a435001a3c4dbeb70a52f5921e1ccd66f55","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/f7bf57e94a5d6214b87be08486cb33836fbfa573","name":"https://git.kernel.org/stable/c/f7bf57e94a5d6214b87be08486cb33836fbfa573","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/4b772869a1e5f9da5cef5b9c722ec0aa424ee0a0","name":"https://git.kernel.org/stable/c/4b772869a1e5f9da5cef5b9c722ec0aa424ee0a0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/98247c8264d2076f81fa114bdfa2c2271953ac7c","name":"https://git.kernel.org/stable/c/98247c8264d2076f81fa114bdfa2c2271953ac7c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98026","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98026","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 98247c8264d2076f81fa114bdfa2c2271953ac7c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 38ab2a435001a3c4dbeb70a52f5921e1ccd66f55 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 f7bf57e94a5d6214b87be08486cb33836fbfa573 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 4b772869a1e5f9da5cef5b9c722ec0aa424ee0a0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3.16","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 3.16 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.111 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.53 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.7 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"98026","cve":"CVE-2026-98026","epss":"0.001680000","percentile":"0.053860000","score_date":"2026-09-27","updated_at":"2026-09-28 00:02:24"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/bridge/br_multicast.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"98247c8264d2076f81fa114bdfa2c2271953ac7c","status":"affected","version":"07f8ac4a1e26e8283542cdaf658a6e2a12fd6980","versionType":"git"},{"lessThan":"38ab2a435001a3c4dbeb70a52f5921e1ccd66f55","status":"affected","version":"07f8ac4a1e26e8283542cdaf658a6e2a12fd6980","versionType":"git"},{"lessThan":"f7bf57e94a5d6214b87be08486cb33836fbfa573","status":"affected","version":"07f8ac4a1e26e8283542cdaf658a6e2a12fd6980","versionType":"git"},{"lessThan":"4b772869a1e5f9da5cef5b9c722ec0aa424ee0a0","status":"affected","version":"07f8ac4a1e26e8283542cdaf658a6e2a12fd6980","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/bridge/br_multicast.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"3.16"},{"lessThan":"3.16","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.111","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.53","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.7","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc3","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.111","versionStartIncluding":"3.16","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.53","versionStartIncluding":"3.16","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.7","versionStartIncluding":"3.16","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc3","versionStartIncluding":"3.16","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: mcast: properly convert mglist to rcu\n\nSashiko reported a bug [1] that br_multicast_del_port_group unlists the\nport group not using proper rcu helper that preserves the next pointer and\nafter that immediately frees the port group without waiting for rcu grace\nperiod. The only rcu walker of mglist is br_multicast_list_adjacent() and\nit turns out that function has always been buggy because mglist was never\nproperly converted to RCU. Fix it by converting it to rcu and moving its\ninitialization after eth_addr's. Initializing p->next can use\nRCU_INIT_POINTER because we have a barrier from the hlist_add_head_rcu call\nlater, besides we're initializing an unpublished structure anyway.\n\n[1] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260826014200.362304-1-littleddfu%40gmail.com"}],"providerMetadata":{"dateUpdated":"2026-09-25T10:23:44.505Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/98247c8264d2076f81fa114bdfa2c2271953ac7c"},{"url":"https://git.kernel.org/stable/c/38ab2a435001a3c4dbeb70a52f5921e1ccd66f55"},{"url":"https://git.kernel.org/stable/c/f7bf57e94a5d6214b87be08486cb33836fbfa573"},{"url":"https://git.kernel.org/stable/c/4b772869a1e5f9da5cef5b9c722ec0aa424ee0a0"}],"title":"net: bridge: mcast: properly convert mglist to rcu","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98026","datePublished":"2026-09-25T10:23:44.505Z","dateReserved":"2026-09-25T10:19:56.070Z","dateUpdated":"2026-09-25T10:23:44.505Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-25 11:17:31","lastModifiedDate":"2026-09-25 11:17:31","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"98026","Ordinal":"1","Title":"net: bridge: mcast: properly convert mglist to rcu","CVE":"CVE-2026-98026","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98026","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: mcast: properly convert mglist to rcu\n\nSashiko reported a bug [1] that br_multicast_del_port_group unlists the\nport group not using proper rcu helper that preserves the next pointer and\nafter that immediately frees the port group without waiting for rcu grace\nperiod. The only rcu walker of mglist is br_multicast_list_adjacent() and\nit turns out that function has always been buggy because mglist was never\nproperly converted to RCU. Fix it by converting it to rcu and moving its\ninitialization after eth_addr's. Initializing p->next can use\nRCU_INIT_POINTER because we have a barrier from the hlist_add_head_rcu call\nlater, besides we're initializing an unpublished structure anyway.\n\n[1] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260826014200.362304-1-littleddfu%40gmail.com","Type":"Description","Title":"net: bridge: mcast: properly convert mglist to rcu"}]}}}