OSDN Git Service

IB/rdmavt: Use struct_size() helper
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Wed, 29 May 2019 15:12:48 +0000 (10:12 -0500)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 30 May 2019 18:40:50 +0000 (15:40 -0300)
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes, in particular in the
context in which this code is being used.

So, replace the following form:

sizeof(struct rvt_sge) * init_attr->cap.max_send_sge + sizeof(struct rvt_swqe)

with:

struct_size(swq, sg_list, init_attr->cap.max_send_sge)

and so on...

Also, notice that variable size is unnecessary, hence it is removed.

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/sw/rdmavt/qp.c

index 31a2e65..a60f5fa 100644 (file)
@@ -988,9 +988,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
        case IB_QPT_UC:
        case IB_QPT_RC:
        case IB_QPT_UD:
-               sz = sizeof(struct rvt_sge) *
-                       init_attr->cap.max_send_sge +
-                       sizeof(struct rvt_swqe);
+               sz = struct_size(swq, sg_list, init_attr->cap.max_send_sge);
                swq = vzalloc_node(array_size(sz, sqsize), rdi->dparms.node);
                if (!swq)
                        return ERR_PTR(-ENOMEM);