mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
RDMA/mlx4: use kzalloc() for the fast registration page list
mlx4_alloc_priv_pages() allocates a zeroed, page-sized buffer for a DMA-to-device page list. kmalloc() provides the required physical contiguity, and a PAGE_SIZE allocation retains the alignment needed to keep the list within one page. Use kzalloc() for the buffer and kfree() on the error and teardown paths. Link: https://patch.msgid.link/20260715-get_pages-to-kmalloc-v1-2-b0b7fce288be@nvidia.com Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
This commit is contained in:
parent
1318e3c33f
commit
ce5322367c
|
|
@ -313,7 +313,7 @@ mlx4_alloc_priv_pages(struct ib_device *device,
|
|||
MLX4_MR_PAGES_ALIGN);
|
||||
|
||||
/* Prevent cross page boundary allocation. */
|
||||
mr->pages = (__be64 *)get_zeroed_page(GFP_KERNEL);
|
||||
mr->pages = kzalloc(PAGE_SIZE, GFP_KERNEL);
|
||||
if (!mr->pages)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
@ -328,7 +328,7 @@ mlx4_alloc_priv_pages(struct ib_device *device,
|
|||
return 0;
|
||||
|
||||
err:
|
||||
free_page((unsigned long)mr->pages);
|
||||
kfree(mr->pages);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -340,7 +340,7 @@ mlx4_free_priv_pages(struct mlx4_ib_mr *mr)
|
|||
|
||||
dma_unmap_single(device->dev.parent, mr->page_map,
|
||||
mr->page_map_size, DMA_TO_DEVICE);
|
||||
free_page((unsigned long)mr->pages);
|
||||
kfree(mr->pages);
|
||||
mr->pages = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user