{"api_version":"1","generated_at":"2026-10-06T15:36:13+00:00","cve":"CVE-2026-98301","urls":{"html":"https://cve.report/CVE-2026-98301","api":"https://cve.report/api/cve/CVE-2026-98301.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98301","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98301"},"summary":{"title":"net: bridge: mst: move switchdev call outside rcu","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: mst: move switchdev call outside rcu\n\nThis is a follow-up of one of sashiko's pre-existing bug reports.\nbr_mst_set_state() calls switchdev_port_attr_set() for nonzero MSTIs\nwhile holding rcu_read_lock() which invokes the blocking switchdev\nnotifier chain and may sleep. Nonzero MSTI changes come from netlink\nwith rtnl held. Move the switchdev call before entering the rcu section and\nassert that rtnl is held.\n\nThe call cannot be deferred because netlink needs its error and extack.\nAlso DSA reads the old bridge MST state during the callback and checks it.\nA deferred callback will be late and will see the updated state.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-10-06 09:18:21","updated_at":"2026-10-06 09:18:21"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/c40ed3e884c8dc0350f26484030438ef24208ff1","name":"https://git.kernel.org/stable/c/c40ed3e884c8dc0350f26484030438ef24208ff1","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/18a6fe05fb6e18de29fa90d388bb34044114b3d8","name":"https://git.kernel.org/stable/c/18a6fe05fb6e18de29fa90d388bb34044114b3d8","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/abf734d150c61acfdfee102169d0e5d1c482e285","name":"https://git.kernel.org/stable/c/abf734d150c61acfdfee102169d0e5d1c482e285","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d5c4ee1fa4e83a12afc051c831936cd8e006cde3","name":"https://git.kernel.org/stable/c/d5c4ee1fa4e83a12afc051c831936cd8e006cde3","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/6b431b63219853eef4054e2f1cb073d2ca2059b4","name":"https://git.kernel.org/stable/c/6b431b63219853eef4054e2f1cb073d2ca2059b4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b9661fd2423fc25e91e0517ecc0b6156ad83e3a8","name":"https://git.kernel.org/stable/c/b9661fd2423fc25e91e0517ecc0b6156ad83e3a8","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98301","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98301","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8ca9a750fc711911ef616ceb627d07357b04545e b9661fd2423fc25e91e0517ecc0b6156ad83e3a8 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4488617e5e995a09abe4d81add5fb165674edb59 6b431b63219853eef4054e2f1cb073d2ca2059b4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3a7c1661ae1383364cd6092d851f5e5da64d476b abf734d150c61acfdfee102169d0e5d1c482e285 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3a7c1661ae1383364cd6092d851f5e5da64d476b d5c4ee1fa4e83a12afc051c831936cd8e006cde3 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3a7c1661ae1383364cd6092d851f5e5da64d476b c40ed3e884c8dc0350f26484030438ef24208ff1 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3a7c1661ae1383364cd6092d851f5e5da64d476b 18a6fe05fb6e18de29fa90d388bb34044114b3d8 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected a2b01e65d9ba8af2bb086d3b7288ca53a07249ac git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e43dd2b1ec746e105b7db5f9ad6ef14685a615a4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.1.93 6.1.189 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.6.33 6.6.158 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.8.12 6.9 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.9.3 6.10 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.10","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.10 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.189 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.158 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.112 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.54 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.8 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc4 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/bridge/br_mst.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"b9661fd2423fc25e91e0517ecc0b6156ad83e3a8","status":"affected","version":"8ca9a750fc711911ef616ceb627d07357b04545e","versionType":"git"},{"lessThan":"6b431b63219853eef4054e2f1cb073d2ca2059b4","status":"affected","version":"4488617e5e995a09abe4d81add5fb165674edb59","versionType":"git"},{"lessThan":"abf734d150c61acfdfee102169d0e5d1c482e285","status":"affected","version":"3a7c1661ae1383364cd6092d851f5e5da64d476b","versionType":"git"},{"lessThan":"d5c4ee1fa4e83a12afc051c831936cd8e006cde3","status":"affected","version":"3a7c1661ae1383364cd6092d851f5e5da64d476b","versionType":"git"},{"lessThan":"c40ed3e884c8dc0350f26484030438ef24208ff1","status":"affected","version":"3a7c1661ae1383364cd6092d851f5e5da64d476b","versionType":"git"},{"lessThan":"18a6fe05fb6e18de29fa90d388bb34044114b3d8","status":"affected","version":"3a7c1661ae1383364cd6092d851f5e5da64d476b","versionType":"git"},{"status":"affected","version":"a2b01e65d9ba8af2bb086d3b7288ca53a07249ac","versionType":"git"},{"status":"affected","version":"e43dd2b1ec746e105b7db5f9ad6ef14685a615a4","versionType":"git"},{"lessThan":"6.1.189","status":"affected","version":"6.1.93","versionType":"semver"},{"lessThan":"6.6.158","status":"affected","version":"6.6.33","versionType":"semver"},{"lessThan":"6.9","status":"affected","version":"6.8.12","versionType":"semver"},{"lessThan":"6.10","status":"affected","version":"6.9.3","versionType":"semver"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/bridge/br_mst.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.10"},{"lessThan":"6.10","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.189","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.158","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.112","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.54","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.8","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc4","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.189","versionStartIncluding":"6.1.93","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.158","versionStartIncluding":"6.6.33","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.112","versionStartIncluding":"6.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.54","versionStartIncluding":"6.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.8","versionStartIncluding":"6.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc4","versionStartIncluding":"6.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8.12","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9.3","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: mst: move switchdev call outside rcu\n\nThis is a follow-up of one of sashiko's pre-existing bug reports.\nbr_mst_set_state() calls switchdev_port_attr_set() for nonzero MSTIs\nwhile holding rcu_read_lock() which invokes the blocking switchdev\nnotifier chain and may sleep. Nonzero MSTI changes come from netlink\nwith rtnl held. Move the switchdev call before entering the rcu section and\nassert that rtnl is held.\n\nThe call cannot be deferred because netlink needs its error and extack.\nAlso DSA reads the old bridge MST state during the callback and checks it.\nA deferred callback will be late and will see the updated state."}],"providerMetadata":{"dateUpdated":"2026-10-06T08:45:58.908Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/b9661fd2423fc25e91e0517ecc0b6156ad83e3a8"},{"url":"https://git.kernel.org/stable/c/6b431b63219853eef4054e2f1cb073d2ca2059b4"},{"url":"https://git.kernel.org/stable/c/abf734d150c61acfdfee102169d0e5d1c482e285"},{"url":"https://git.kernel.org/stable/c/d5c4ee1fa4e83a12afc051c831936cd8e006cde3"},{"url":"https://git.kernel.org/stable/c/c40ed3e884c8dc0350f26484030438ef24208ff1"},{"url":"https://git.kernel.org/stable/c/18a6fe05fb6e18de29fa90d388bb34044114b3d8"}],"title":"net: bridge: mst: move switchdev call outside rcu","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98301","datePublished":"2026-10-06T08:45:58.908Z","dateReserved":"2026-09-25T10:25:14.337Z","dateUpdated":"2026-10-06T08:45:58.908Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-06 09:18:21","lastModifiedDate":"2026-10-06 09:18:21","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"98301","Ordinal":"1","Title":"net: bridge: mst: move switchdev call outside rcu","CVE":"CVE-2026-98301","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98301","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bridge: mst: move switchdev call outside rcu\n\nThis is a follow-up of one of sashiko's pre-existing bug reports.\nbr_mst_set_state() calls switchdev_port_attr_set() for nonzero MSTIs\nwhile holding rcu_read_lock() which invokes the blocking switchdev\nnotifier chain and may sleep. Nonzero MSTI changes come from netlink\nwith rtnl held. Move the switchdev call before entering the rcu section and\nassert that rtnl is held.\n\nThe call cannot be deferred because netlink needs its error and extack.\nAlso DSA reads the old bridge MST state during the callback and checks it.\nA deferred callback will be late and will see the updated state.","Type":"Description","Title":"net: bridge: mst: move switchdev call outside rcu"}]}}}