[PATCH v3 0/2] dmaengine: idxd: Fix refcount and cleanup issues on module unload
From: Yi Sun
Date: Tue Jun 17 2025 - 06:27:42 EST
This patch series addresses two issues related to the device reference
counting and cleanup path in the idxd driver.
Recent changes introduced improper put_device() calls and duplicated
cleanup logic, leading to refcount underflow and potential use-after-free
during module unload.
Patch 1 removes an unnecessary call to idxd_free(), which could result in a
use-after-free when paired with asynchronous put_device().
Patch 2 refactors the cleanup path to avoid redundant put_device() calls
introduced in commit a409e919ca3. The existing idxd_unregister_devices()
already handles proper device reference release.
Both patches have been verified on hardware platform.
Both patches have been run through `checkpatch.pl`. Patch 2 gets 1 error
and 1 warning. But these appear to be limitations in the checkpatch script
itself, not reflect issues with the patches.
---
Changes in V3:
- Removed function idxd_disable_sva which got removed recently (Vinicius)
Changes in v2:
- Reworded commit messages supplementing the call traces (Vinicius)
- Explain why the put_device are unnecessary. (Vinicius)
Yi Sun (2):
dmaengine: idxd: Remove improper idxd_free
dmaengine: idxd: Fix refcount underflow on module unload
drivers/dma/idxd/init.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--
2.43.0