{"id":"CVE-2026-68403","state":"PUBLISHED","title":"wifi: brcmfmac: initialize SDIO data work before cleanup","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: brcmfmac: initialize SDIO data work before cleanup\n\nbrcmf_sdio_probe() stores the newly allocated bus in sdiodev->bus before\nallocating the ordered workqueue. If that allocation fails, the function\njumps to fail and calls brcmf_sdio_remove().\n\nbrcmf_sdio_remove() unconditionally cancels bus->datawork. Initialize the\nwork item before the first failure path that can reach brcmf_sdio_remove(),\nso the cleanup path always observes a valid work object.\n\nThis issue was found by our static analysis tool and then confirmed by\nmanual review of the probe error path and the remove-time work drain. The\nproblem pattern is an early setup failure that reaches a cleanup helper\nwhich cancels an embedded work item before its initializer has run.\n\nA QEMU PoC forced alloc_ordered_workqueue() to fail at the same point in\nbrcmf_sdio_probe(), before INIT_WORK(&bus->datawork) is reached. The\nresulting fail path calls brcmf_sdio_remove(), and DEBUG_OBJECTS reports\nthe invalid work drain with brcmf_sdio_probe() and brcmf_sdio_remove() in\nthe stack.","publishedAt":"2026-08-10T12:04:23.150Z","updatedAt":"2026-08-19T16:34:54.805Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"860887d22890417d43ef8298f0cc4865e29b54de","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"9a4be91e5bb032b34cb3c962f6d4f82e7ef09364","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"fb12c87ae855346321af72e57a93c146205f1090","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"f50a2b9e57a751e70ae9a272875d80d39eaccd6a","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"6bd21ec8549a5854dd64204a66289952917a924c","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"5c342437ea44bb829680ca9e4f683dd5b325b219","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"c73c3fc1c7ca5a927639f0884624cb244ba791e4","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"2a665946e0407a05a3f81bd56a08553c446498e0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.1","versionType":"semver"},{"version":"5.10.265","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.216","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.148","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.101","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.42","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.6","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","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/broadcom/brcm80211/brcmfmac/sdio.c"]}],"references":["https://git.kernel.org/stable/c/860887d22890417d43ef8298f0cc4865e29b54de","https://git.kernel.org/stable/c/9a4be91e5bb032b34cb3c962f6d4f82e7ef09364","https://git.kernel.org/stable/c/fb12c87ae855346321af72e57a93c146205f1090","https://git.kernel.org/stable/c/f50a2b9e57a751e70ae9a272875d80d39eaccd6a","https://git.kernel.org/stable/c/6bd21ec8549a5854dd64204a66289952917a924c","https://git.kernel.org/stable/c/5c342437ea44bb829680ca9e4f683dd5b325b219","https://git.kernel.org/stable/c/c73c3fc1c7ca5a927639f0884624cb244ba791e4","https://git.kernel.org/stable/c/2a665946e0407a05a3f81bd56a08553c446498e0"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:49.727Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/68xxx/CVE-2026-68403.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-68403","state":"PUBLISHED","datePublished":"2026-08-10T12:04:23.150Z","dateUpdated":"2026-08-19T16:34:54.805Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-30T09:28:09.390Z"},"containers":{"cna":{"title":"wifi: brcmfmac: initialize SDIO data work before cleanup","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: brcmfmac: initialize SDIO data work before cleanup\n\nbrcmf_sdio_probe() stores the newly allocated bus in sdiodev->bus before\nallocating the ordered workqueue. If that allocation fails, the function\njumps to fail and calls brcmf_sdio_remove().\n\nbrcmf_sdio_remove() unconditionally cancels bus->datawork. Initialize the\nwork item before the first failure path that can reach brcmf_sdio_remove(),\nso the cleanup path always observes a valid work object.\n\nThis issue was found by our static analysis tool and then confirmed by\nmanual review of the probe error path and the remove-time work drain. The\nproblem pattern is an early setup failure that reaches a cleanup helper\nwhich cancels an embedded work item before its initializer has run.\n\nA QEMU PoC forced alloc_ordered_workqueue() to fail at the same point in\nbrcmf_sdio_probe(), before INIT_WORK(&bus->datawork) is reached. The\nresulting fail path calls brcmf_sdio_remove(), and DEBUG_OBJECTS reports\nthe invalid work drain with brcmf_sdio_probe() and brcmf_sdio_remove() in\nthe stack."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"860887d22890417d43ef8298f0cc4865e29b54de","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"9a4be91e5bb032b34cb3c962f6d4f82e7ef09364","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"fb12c87ae855346321af72e57a93c146205f1090","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"f50a2b9e57a751e70ae9a272875d80d39eaccd6a","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"6bd21ec8549a5854dd64204a66289952917a924c","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"5c342437ea44bb829680ca9e4f683dd5b325b219","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"c73c3fc1c7ca5a927639f0884624cb244ba791e4","versionType":"git"},{"version":"9982464379e81ece51ced03ebecbbcd34ea367a6","status":"affected","lessThan":"2a665946e0407a05a3f81bd56a08553c446498e0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.1","versionType":"semver"},{"version":"5.10.265","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.216","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.148","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.101","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.42","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.6","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","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/broadcom/brcm80211/brcmfmac/sdio.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/860887d22890417d43ef8298f0cc4865e29b54de"},{"url":"https://git.kernel.org/stable/c/9a4be91e5bb032b34cb3c962f6d4f82e7ef09364"},{"url":"https://git.kernel.org/stable/c/fb12c87ae855346321af72e57a93c146205f1090"},{"url":"https://git.kernel.org/stable/c/f50a2b9e57a751e70ae9a272875d80d39eaccd6a"},{"url":"https://git.kernel.org/stable/c/6bd21ec8549a5854dd64204a66289952917a924c"},{"url":"https://git.kernel.org/stable/c/5c342437ea44bb829680ca9e4f683dd5b325b219"},{"url":"https://git.kernel.org/stable/c/c73c3fc1c7ca5a927639f0884624cb244ba791e4"},{"url":"https://git.kernel.org/stable/c/2a665946e0407a05a3f81bd56a08553c446498e0"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-19T16:34:54.805Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"5.10.265"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"5.15.216"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"6.1.183"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"6.6.148"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"6.12.101"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"6.18.42"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"7.1.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}