Thread (9 messages) 9 messages, 4 authors, 2019-05-28

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

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help