{"id":"CVE-2026-93149","state":"PUBLISHED","title":"wifi: mac80211_hwsim: avoid NULL skb in stop queue drain","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211_hwsim: avoid NULL skb in stop queue drain\n\nmac80211_hwsim_stop() drops any frames left in data->pending. The loop\ncurrently checks skb_queue_empty() and then dequeues separately.\n\nThat split is racy with TX status handling, which can remove a pending\nframe under the queue lock. If the last entry is removed after the empty\ncheck, skb_dequeue() returns NULL and the stop path passes that NULL skb\nto ieee80211_free_txskb().\n\nUse skb_dequeue() as the loop condition instead. The dequeue result is the\nobject that stop owns and frees, and a concurrent status completion that\nempties the queue simply makes the loop terminate.","publishedAt":"2026-09-17T16:11:46.136Z","updatedAt":"2026-10-19T09:06:21.596Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"d131027054a8dd922dda01fe8d381abe5af4970b","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"c40ba47f2ba1951cb32ea048667ed014d36a5749","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"2817431a61557f46dc63077b7cc126bc906c242e","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"e7fccad2c8e6ef6bbafe509c95869d161d0f466b","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"1c2a4ab6efa26415dd131b8c222e7893fda03435","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"158438cd6ad69d6dd7d871582c38baf22169fede","versionType":"git"},{"version":"78bf3c6131488b00386acd9aff1ea4e6c44fa38e","status":"affected","versionType":"git"},{"version":"a9028333001f793b2724e8be42fce3336de2cf1c","status":"affected","versionType":"git"},{"version":"7019c9f385b264a2d6f685028268422d55087e37","status":"affected","versionType":"git"},{"version":"5.4.129","status":"affected","lessThan":"5.5","versionType":"semver"},{"version":"5.10.47","status":"affected","lessThan":"5.11","versionType":"semver"},{"version":"5.12.14","status":"affected","lessThan":"5.13","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/virtual/mac80211_hwsim_main.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.13","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.157","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.110","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.52","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.6","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/virtual/mac80211_hwsim_main.c"]}],"references":["https://git.kernel.org/stable/c/d131027054a8dd922dda01fe8d381abe5af4970b","https://git.kernel.org/stable/c/c40ba47f2ba1951cb32ea048667ed014d36a5749","https://git.kernel.org/stable/c/2817431a61557f46dc63077b7cc126bc906c242e","https://git.kernel.org/stable/c/e7fccad2c8e6ef6bbafe509c95869d161d0f466b","https://git.kernel.org/stable/c/1c2a4ab6efa26415dd131b8c222e7893fda03435","https://git.kernel.org/stable/c/158438cd6ad69d6dd7d871582c38baf22169fede"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:34.582Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/93xxx/CVE-2026-93149.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-93149","state":"PUBLISHED","datePublished":"2026-09-17T16:11:46.136Z","dateUpdated":"2026-10-19T09:06:21.596Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-17T16:02:15.088Z"},"containers":{"cna":{"title":"wifi: mac80211_hwsim: avoid NULL skb in stop queue drain","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211_hwsim: avoid NULL skb in stop queue drain\n\nmac80211_hwsim_stop() drops any frames left in data->pending. The loop\ncurrently checks skb_queue_empty() and then dequeues separately.\n\nThat split is racy with TX status handling, which can remove a pending\nframe under the queue lock. If the last entry is removed after the empty\ncheck, skb_dequeue() returns NULL and the stop path passes that NULL skb\nto ieee80211_free_txskb().\n\nUse skb_dequeue() as the loop condition instead. The dequeue result is the\nobject that stop owns and frees, and a concurrent status completion that\nempties the queue simply makes the loop terminate."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"d131027054a8dd922dda01fe8d381abe5af4970b","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"c40ba47f2ba1951cb32ea048667ed014d36a5749","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"2817431a61557f46dc63077b7cc126bc906c242e","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"e7fccad2c8e6ef6bbafe509c95869d161d0f466b","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"1c2a4ab6efa26415dd131b8c222e7893fda03435","versionType":"git"},{"version":"bd18de517923903a177508fc8813f44e717b1c00","status":"affected","lessThan":"158438cd6ad69d6dd7d871582c38baf22169fede","versionType":"git"},{"version":"78bf3c6131488b00386acd9aff1ea4e6c44fa38e","status":"affected","versionType":"git"},{"version":"a9028333001f793b2724e8be42fce3336de2cf1c","status":"affected","versionType":"git"},{"version":"7019c9f385b264a2d6f685028268422d55087e37","status":"affected","versionType":"git"},{"version":"5.4.129","status":"affected","lessThan":"5.5","versionType":"semver"},{"version":"5.10.47","status":"affected","lessThan":"5.11","versionType":"semver"},{"version":"5.12.14","status":"affected","lessThan":"5.13","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/virtual/mac80211_hwsim_main.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.13","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.157","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.110","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.52","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.6","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/virtual/mac80211_hwsim_main.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d131027054a8dd922dda01fe8d381abe5af4970b"},{"url":"https://git.kernel.org/stable/c/c40ba47f2ba1951cb32ea048667ed014d36a5749"},{"url":"https://git.kernel.org/stable/c/2817431a61557f46dc63077b7cc126bc906c242e"},{"url":"https://git.kernel.org/stable/c/e7fccad2c8e6ef6bbafe509c95869d161d0f466b"},{"url":"https://git.kernel.org/stable/c/1c2a4ab6efa26415dd131b8c222e7893fda03435"},{"url":"https://git.kernel.org/stable/c/158438cd6ad69d6dd7d871582c38baf22169fede"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T09:06:21.596Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.1.188"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.6.157"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.12.110"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.18.52"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"7.2.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"7.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.129"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.47"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12.14"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}