]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/irdma: Use kvzalloc for paged memory DMA address array
authorCarlos Bilbao <carlos.bilbao@kernel.org>
Wed, 28 Jan 2026 01:44:46 +0000 (17:44 -0800)
committerLeon Romanovsky <leon@kernel.org>
Wed, 28 Jan 2026 10:44:04 +0000 (05:44 -0500)
Allocate array chunk->dmainfo.dmaaddrs using kvzalloc() to allow the
allocation to fall back to vmalloc when contiguous memory is unavailable
(instead of failing and logging page allocation warnings).

Acked-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Signed-off-by: Carlos Bilbao (Lambda) <carlos.bilbao@kernel.org>
Link: https://patch.msgid.link/20260128014446.405247-1-carlos.bilbao@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/irdma/utils.c

index 6a385cea6b2c7e0eaf31c5e0bc399157ec8e97db..9d737f9e52dffeb3f6d50f11f838769ce8d61e83 100644 (file)
@@ -2239,7 +2239,7 @@ void irdma_pble_free_paged_mem(struct irdma_chunk *chunk)
                                 chunk->pg_cnt);
 
 done:
-       kfree(chunk->dmainfo.dmaaddrs);
+       kvfree(chunk->dmainfo.dmaaddrs);
        chunk->dmainfo.dmaaddrs = NULL;
        vfree(chunk->vaddr);
        chunk->vaddr = NULL;
@@ -2256,7 +2256,7 @@ int irdma_pble_get_paged_mem(struct irdma_chunk *chunk, u32 pg_cnt)
        u32 size;
        void *va;
 
-       chunk->dmainfo.dmaaddrs = kzalloc(pg_cnt << 3, GFP_KERNEL);
+       chunk->dmainfo.dmaaddrs = kvzalloc(pg_cnt << 3, GFP_KERNEL);
        if (!chunk->dmainfo.dmaaddrs)
                return -ENOMEM;
 
@@ -2277,7 +2277,7 @@ int irdma_pble_get_paged_mem(struct irdma_chunk *chunk, u32 pg_cnt)
 
        return 0;
 err:
-       kfree(chunk->dmainfo.dmaaddrs);
+       kvfree(chunk->dmainfo.dmaaddrs);
        chunk->dmainfo.dmaaddrs = NULL;
 
        return -ENOMEM;