diff options
| author | Fan Wu <fanwu01@zju.edu.cn> | 2026-07-23 11:28:42 +0000 |
|---|---|---|
| committer | Ulf Hansson <ulfh@kernel.org> | 2026-07-27 17:59:33 +0200 |
| commit | 57e5d877f898d5e5c9d672a77bb6bdd24f0d9bf5 (patch) | |
| tree | 4b79d6af4a936a32888eaf4d5fe034764d8b55c0 /tools/perf/scripts/python/export-to-postgresql.py | |
| parent | 088eaa92fcebaa6b957ccf9635afdf39643a577d (diff) | |
mmc: via-sdmmc: cancel card-detect work on remove
Disabling the device interrupt and freeing the IRQ prevents new card-detect
work from being queued, but carddet_work already queued by the handler can
still run after via_sd_remove() returns. via_sdc_card_detect() recovers the
host through container_of() and dereferences its MMIO base; once remove()
returns the host can be freed, so that work would touch freed memory.
Cancel carddet_work after freeing the IRQ and before cancelling
finish_bh_work, which the card-detect handler can also queue. carddet_work
can re-enable the interrupt through via_reset_pcictrl(); mask it again
afterwards.
This issue was found by an in-house static analysis tool and confirmed by
manual code review.
Fixes: f0bf7f61b840 ("mmc: Add new via-sdmmc host controller driver")
Cc: stable@vger.kernel.org
Assisted-by: Codex:gpt-5.6
Signed-off-by: Fan Wu <fanwu01@zju.edu.cn>
Signed-off-by: Ulf Hansson <ulfh@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions
