Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

RDMA/ocrdma: kzalloc_objs to kzalloc_flex

Simplify allocation by eliminating one. No longer need to kfree pages
separately.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://patch.msgid.link/20260308201419.5260-1-rosenp@gmail.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>

authored by

Rosen Penev and committed by
Leon Romanovsky
2afa8b9f 4707bf5f

+4 -13
+1 -1
drivers/infiniband/hw/ocrdma/ocrdma.h
··· 190 190 struct ib_mr ibmr; 191 191 struct ib_umem *umem; 192 192 struct ocrdma_hw_mr hwmr; 193 - u64 *pages; 194 193 u32 npages; 194 + u64 pages[]; 195 195 }; 196 196 197 197 struct ocrdma_stats {
+3 -12
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
··· 910 910 911 911 (void) ocrdma_mbx_dealloc_lkey(dev, mr->hwmr.fr_mr, mr->hwmr.lkey); 912 912 913 - kfree(mr->pages); 914 913 ocrdma_free_mr_pbl_tbl(dev, &mr->hwmr); 915 914 916 915 /* it could be user registered memory. */ ··· 2907 2908 if (max_num_sg > dev->attr.max_pages_per_frmr) 2908 2909 return ERR_PTR(-EINVAL); 2909 2910 2910 - mr = kzalloc_obj(*mr); 2911 + mr = kzalloc_flex(*mr, pages, max_num_sg); 2911 2912 if (!mr) 2912 2913 return ERR_PTR(-ENOMEM); 2913 2914 2914 - mr->pages = kzalloc_objs(*mr->pages, max_num_sg); 2915 - if (!mr->pages) { 2916 - status = -ENOMEM; 2917 - goto pl_err; 2918 - } 2919 - 2920 2915 status = ocrdma_get_pbl_info(dev, mr, max_num_sg); 2921 2916 if (status) 2922 - goto pbl_err; 2917 + goto pl_err; 2923 2918 mr->hwmr.fr_mr = 1; 2924 2919 mr->hwmr.remote_rd = 0; 2925 2920 mr->hwmr.remote_wr = 0; ··· 2922 2929 mr->hwmr.mw_bind = 0; 2923 2930 status = ocrdma_build_pbl_tbl(dev, &mr->hwmr); 2924 2931 if (status) 2925 - goto pbl_err; 2932 + goto pl_err; 2926 2933 status = ocrdma_reg_mr(dev, &mr->hwmr, pd->id, 0); 2927 2934 if (status) 2928 2935 goto mbx_err; ··· 2933 2940 return &mr->ibmr; 2934 2941 mbx_err: 2935 2942 ocrdma_free_mr_pbl_tbl(dev, &mr->hwmr); 2936 - pbl_err: 2937 - kfree(mr->pages); 2938 2943 pl_err: 2939 2944 kfree(mr); 2940 2945 return ERR_PTR(-ENOMEM);