Re: [PATCH net-next] xprtrdma: Use struct_size() in kzalloc()
From: Gustavo A. R. Silva <hidden>
Date: 2019-05-23 22:36:07
Also in:
linux-nfs, lkml
Hi Dave, I wonder if you can take this patch. Thanks -- Gustavo On 3/28/19 3:41 PM, Gustavo A. R. Silva wrote:
Hi all, Friendly ping: Who can take this? Thanks -- Gustavo On 1/31/19 8:11 AM, Chuck Lever wrote:quoted
quoted
On Jan 30, 2019, at 7:46 PM, Gustavo A. R. Silva [off-list ref] wrote: One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example: struct foo { int stuff; struct boo entry[]; }; instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL); Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper: instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL); This code was detected with the help of Coccinelle. Signed-off-by: Gustavo A. R. Silva <redacted>Reviewed-by: Chuck Lever <chuck.lever@oracle.com>quoted
--- net/sunrpc/xprtrdma/verbs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index 4994e75945b8..9e8cf7456840 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c@@ -811,8 +811,7 @@ static struct rpcrdma_sendctx *rpcrdma_sendctx_create(struct rpcrdma_ia *ia){ struct rpcrdma_sendctx *sc; - sc = kzalloc(sizeof(*sc) + - ia->ri_max_send_sges * sizeof(struct ib_sge), + sc = kzalloc(struct_size(sc, sc_sges, ia->ri_max_send_sges), GFP_KERNEL); if (!sc) return NULL; -- 2.20.1-- Chuck Lever