mmc: mtk-sd: Cancel request timeout work on remove
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.160, 6.12.113, 6.18.57, 7.2.11
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: mmc: mtk-sd: Cancel request timeout work on remove The driver queues req_timeout while a request is active. msdc_request_done() uses cancel_delayed_work(), which does not wait for a timeout callback that has already started. The timeout callback calls mmc_request_done(), which wakes the request waiter, and then continues to use host->dev_comp and check the SDIO IRQ. During unbind, msdc_drv_remove() can return and the managed mmc_host can be freed before the callback finishes. KASAN reported use-after-free accesses in msdc_request_done() and msdc_recheck_sdio_irq() in each of three unbind tests. The same tests completed without a kernel diagnostic after this change. Call cancel_delayed_work_sync() after mmc_remove_host() has stopped new requests and before the driver releases the host resources.
Timeline
- CVE published
- First seen by cve.now
Affected versions
- Linux Linux
From 208489032bdd8d4a7de50f3057c175058f271956 · fixed in 9e799f25c420e759641eb25102967ea091fc758f; From 208489032bdd8d4a7de50f3057c175058f271956 · fixed in f37e0367ad6f2147a0b37564b442b7a25bec0d23; From 208489032bdd8d4a7de50f3057c175058f271956 · fixed in 46e75703ca3f00fb8c935b3ce35b90836e34e8af; From 208489032bdd8d4a7de50f3057c175058f271956 · fixed in edef1355224c0799a502a46b71d3649fa0dd218e; From 208489032bdd8d4a7de50f3057c175058f271956 · fixed in b38af5386a74416e898955443f2e26547b358cb2
- Linux Linux
4.2
- KernelLinux
From 4.2.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.113; From 6.13.0 · fixed in 6.18.57; From 6.19.0 · fixed in 7.2.11