Skip to content

Commit f1b195c

Browse files
Len Bakerjgunthorpe
authored andcommitted
RDMA/bnxt_re: Prefer kcalloc over open coded arithmetic
As noted in the "Deprecated Interfaces, Language Features, Attributes, and Conventions" documentation [1], size calculations (especially multiplication) should not be performed in memory allocator (or similar) function arguments due to the risk of them overflowing. This could lead to values wrapping around and a smaller allocation being made than the caller was expecting. Using those allocations could lead to linear overflows of heap memory and other misbehaviors. In this case this is not actually dynamic sizes: both sides of the multiplication are constant values. However it is best to refactor this anyway, just to keep the open-coded math idiom out of code. So, use the purpose specific kcalloc() function instead of the argument size * count in the kzalloc() function. Also, remove the unnecessary initialization of the sqp_tbl variable since it is set a few lines later. [1] https://www.kernel.org/doc/html/v5.14/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments Link: https://lore.kernel.org/r/20210905081812.17113-1-len.baker@gmx.com Signed-off-by: Len Baker <len.baker@gmx.com> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Acked-by: Selvin Xavier <selvin.xavier@broadcom.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
1 parent 84f969e commit f1b195c

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/infiniband/hw/bnxt_re/ib_verbs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1309,15 +1309,15 @@ static int bnxt_re_init_qp_attr(struct bnxt_re_qp *qp, struct bnxt_re_pd *pd,
13091309
static int bnxt_re_create_shadow_gsi(struct bnxt_re_qp *qp,
13101310
struct bnxt_re_pd *pd)
13111311
{
1312-
struct bnxt_re_sqp_entries *sqp_tbl = NULL;
1312+
struct bnxt_re_sqp_entries *sqp_tbl;
13131313
struct bnxt_re_dev *rdev;
13141314
struct bnxt_re_qp *sqp;
13151315
struct bnxt_re_ah *sah;
13161316
int rc = 0;
13171317

13181318
rdev = qp->rdev;
13191319
/* Create a shadow QP to handle the QP1 traffic */
1320-
sqp_tbl = kzalloc(sizeof(*sqp_tbl) * BNXT_RE_MAX_GSI_SQP_ENTRIES,
1320+
sqp_tbl = kcalloc(BNXT_RE_MAX_GSI_SQP_ENTRIES, sizeof(*sqp_tbl),
13211321
GFP_KERNEL);
13221322
if (!sqp_tbl)
13231323
return -ENOMEM;

0 commit comments

Comments
 (0)