| From 829ca44ecf60e9b6f83d0161a6ef10c1304c5060 Mon Sep 17 00:00:00 2001 |
| From: "Gustavo A. R. Silva" <gustavo@embeddedor.com> |
| Date: Wed, 29 May 2019 10:13:26 -0500 |
| Subject: IB/qib: Use struct_size() helper |
| |
| From: Gustavo A. R. Silva <gustavo@embeddedor.com> |
| |
| commit 829ca44ecf60e9b6f83d0161a6ef10c1304c5060 upstream. |
| |
| 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. |
| |
| 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> |
| Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/infiniband/hw/qib/qib_user_sdma.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/infiniband/hw/qib/qib_user_sdma.c |
| +++ b/drivers/infiniband/hw/qib/qib_user_sdma.c |
| @@ -41,6 +41,7 @@ |
| #include <linux/rbtree.h> |
| #include <linux/spinlock.h> |
| #include <linux/delay.h> |
| +#include <linux/overflow.h> |
| |
| #include "qib.h" |
| #include "qib_user_sdma.h" |
| @@ -908,10 +909,11 @@ static int qib_user_sdma_queue_pkts(cons |
| } |
| |
| 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. |