RDMA/core: Free pfn_list with appropriate kvfree call
authorAkhilesh Patil <akhilesh@ee.iitb.ac.in>
Sun, 10 Aug 2025 17:51:58 +0000 (23:21 +0530)
committerLeon Romanovsky <leon@kernel.org>
Wed, 13 Aug 2025 11:00:21 +0000 (07:00 -0400)
Ensure that pfn_list allocated by kvcalloc() is freed using corresponding
kvfree() function. Match memory allocation and free routines kvcalloc -> kvfree.

Fixes: 259e9bd07c57 ("RDMA/core: Avoid hmm_dma_map_alloc() for virtual DMA devices")
Signed-off-by: Akhilesh Patil <akhilesh@ee.iitb.ac.in>
Link: https://patch.msgid.link/aJjcPjL1BVh8QrMN@bhairav-test.ee.iitb.ac.in
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/umem_odp.c

index b1c44ec1a3f36dabe6d03ca4b8b6d75141d5c35d..572a91a62a7beafcaa15aa43355500c3fb9d5b63 100644 (file)
@@ -115,7 +115,7 @@ static int ib_init_umem_odp(struct ib_umem_odp *umem_odp,
 
 out_free_map:
        if (ib_uses_virt_dma(dev))
-               kfree(map->pfn_list);
+               kvfree(map->pfn_list);
        else
                hmm_dma_map_free(dev->dma_device, map);
        return ret;
@@ -287,7 +287,7 @@ static void ib_umem_odp_free(struct ib_umem_odp *umem_odp)
        mutex_unlock(&umem_odp->umem_mutex);
        mmu_interval_notifier_remove(&umem_odp->notifier);
        if (ib_uses_virt_dma(dev))
-               kfree(umem_odp->map.pfn_list);
+               kvfree(umem_odp->map.pfn_list);
        else
                hmm_dma_map_free(dev->dma_device, &umem_odp->map);
 }