IB/qib: Use struct_size() helper
PATCH 1/1 IB/qib: Use struct_size() helper
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(*pkt) + sizeof(pkt->addr[0])*n
with:
struct_size(pkt, addr, n)
Also, notice that variable size is unnecessary, hence it is removed.
This code was detected with the help of Coccinelle.
--- drivers/infiniband/hw/qib/qib_user_sdma.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/infiniband/hw/qib/qib_user_sdma.c +3 -2
@@ -904,10 +904,11 @@ static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd, }if (frag_size) { -int pktsize, tidsmsize, n; +int tidsmsize, n; +size_t pktsize; n = npages*((2 *PAGE_SIZE /frag_size)+1 ); - pktsize =sizeof (*pkt) +sizeof (pkt->addr[0 ])*n; + pktsize =struct_size (pkt, addr, n);/* * Determine if this is tid-sdma or just sdma.
Signature · 1 line
2.21.0
Quoted 30 lines · Gustavo A. R. Silva
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(*pkt)+ sizeof(pkt->addr[0])*nwith:
struct_size(pkt, addr, n)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 <[email protected]>--- drivers/infiniband/hw/qib/qib_user_sdma.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)drivers/infiniband/hw/qib/qib_user_sdma.c +0
-0@@ -904,10 +904,11 @@ static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd, }if (frag_size) {
drivers/infiniband/hw/qib/qib_user_sdma.c static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd, · line 914
Quoted 10 lines
drivers/infiniband/hw/qib/qib_user_sdma.c +3
-2-int pktsize, tidsmsize, n; +int tidsmsize, n; +size_t pktsize; n = npages*((2 *PAGE_SIZE /frag_size)+1 ); - pktsize =sizeof (*pkt) +sizeof (pkt->addr[0 ])*n; + pktsize =struct_size (pkt, addr, n);/* * Determine if this is tid-sdma or just sdma.
Again, same minor objection but correct patch none the less.
Jason Gunthorpe
AppliedQuoted 14 lines · Gustavo A. R. Silva
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(*pkt)+ sizeof(pkt->addr[0])*nwith:
struct_size(pkt, addr, n)Also, notice that variable size is unnecessary, hence it is removed.
Quoted 7 lines
This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>Reviewed-by Dennis Dalessandro <[email protected]>--- drivers/infiniband/hw/qib/qib_user_sdma.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Applied to for-next, thanks
Jason