Linux: mmc: mxcmmc: cancel data work and watchdog on remove
What fixes it
- 740f595f8ad678cb4d79f13edd12851df2492bddLinuxCVE List
- 314966b490323bdcfd3162a1398b00e587e0ced4LinuxCVE List
- 23383e0578b58ba2dc0730cf9f7806bd66bf859aLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
mmc: mxcmmc: cancel data work and watchdog on remove
mxcmci_remove() frees the host through the devm tail, but neither it nor mmc_remove_host() drains the driver's own asynchronous state. host->watchdog, a 10 s timer armed on the DMA path in mxcmci_setup_data(), is deleted only by the DMA- and IRQ-complete paths, which the remove path does not explicitly drain; it can therefore fire after the host is freed and dereference it in mxcmci_watchdog(). host->datawork, armed from the IRQ handler on the PIO path, is not cancelled by the remove path either.
Free the devm-registered IRQ, then cancel datawork and delete the watchdog in mxcmci_remove(), before dma_release_channel(). Freeing the IRQ first keeps a trailing handler from re-arming datawork between the cancel and the host free. Both callbacks are non-self-rearming.
This issue was found by an in-house static analysis tool.
Text from CVE List
Affected versions 18
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before 740f595f8ad678cb4d79f13edd12851df2492bddCVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before d3641afe6ee76d852834a34ef0669eefced32752CVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before 314966b490323bdcfd3162a1398b00e587e0ced4CVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before ae10838a7cdf0e54caa9d0a4f488704fd04e7f01CVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before a1ff367e0dc961d73707add508a95df5c3509bd1CVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before 23383e0578b58ba2dc0730cf9f7806bd66bf859aCVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before e2948c4232209e87c861a680f20f1e3cf8a57fecCVE List
- Linuxaffected: f6ad0a481342223b2e7ae9f55b154e14f1391ada before d3a421c82412344022982d5b91ba23194a0a6f29CVE List
- Linuxaffected: 3.7CVE List
- Linuxunaffected: all versions before 3.7CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/740f595f8ad678cb4d79f13edd12851df2492bddReferencevia CVE List
- git.kernel.org/stable/c/d3641afe6ee76d852834a34ef0669eefced32752Referencevia CVE List
- git.kernel.org/stable/c/314966b490323bdcfd3162a1398b00e587e0ced4Referencevia CVE List
- git.kernel.org/stable/c/ae10838a7cdf0e54caa9d0a4f488704fd04e7f01Referencevia CVE List
- git.kernel.org/stable/c/a1ff367e0dc961d73707add508a95df5c3509bd1Referencevia CVE List
- git.kernel.org/stable/c/23383e0578b58ba2dc0730cf9f7806bd66bf859aReferencevia CVE List
- git.kernel.org/stable/c/e2948c4232209e87c861a680f20f1e3cf8a57fecReferencevia CVE List
- git.kernel.org/stable/c/d3a421c82412344022982d5b91ba23194a0a6f29Referencevia CVE List