diff options
| author | Felix Gu <ustc.gu@gmail.com> | 2026-04-16 21:37:23 +0800 |
|---|---|---|
| committer | Lizhi Hou <lizhi.hou@amd.com> | 2026-04-16 08:54:07 -0700 |
| commit | 432fafdc9a3122a7bee5b2bfd23dcf2dc262a3d7 (patch) | |
| tree | 003ded0dfcf37965bb2685c79d6de9af8ba48ca0 | |
| parent | 6771275b4c96942b1b22ddcc9216e8458d206540 (diff) | |
| download | linux-432fafdc9a3122a7bee5b2bfd23dcf2dc262a3d7.tar.gz linux-432fafdc9a3122a7bee5b2bfd23dcf2dc262a3d7.zip | |
accel/amdxdna: Fix memory leak in amdxdna_iommu_alloc()
In amdxdna_iommu_alloc(), if iommu_map() fails after successfully
allocating both iova and cpu_addr, the code jumps to free_iova
which only frees the iova, leaking the allocated pages.
Fixes: ece3e8980907 ("accel/amdxdna: Allow forcing IOVA-based DMA via module parameter")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
Link: https://patch.msgid.link/20260416-amdxdna-v1-1-30c13008365c@gmail.com
| -rw-r--r-- | drivers/accel/amdxdna/amdxdna_iommu.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/accel/amdxdna/amdxdna_iommu.c b/drivers/accel/amdxdna/amdxdna_iommu.c index 2676cfcfabee..5a9f06183487 100644 --- a/drivers/accel/amdxdna/amdxdna_iommu.c +++ b/drivers/accel/amdxdna/amdxdna_iommu.c @@ -117,10 +117,12 @@ void *amdxdna_iommu_alloc(struct amdxdna_dev *xdna, size_t size, dma_addr_t *dma iova_align(&xdna->iovad, size), IOMMU_READ | IOMMU_WRITE, GFP_KERNEL); if (ret) - goto free_iova; + goto free_cpu_addr; return cpu_addr; +free_cpu_addr: + free_pages((unsigned long)cpu_addr, get_order(size)); free_iova: __free_iova(&xdna->iovad, iova); return ERR_PTR(ret); |
