2020-06-17 22:32:34

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH][next] bcache: movinggc: Use struct_size() helper in kzalloc()

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.

This code was detected with the help of Coccinelle and, audited and
fixed manually.

Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/md/bcache/movinggc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/md/bcache/movinggc.c b/drivers/md/bcache/movinggc.c
index 7891fb512736..b7dd2d75f58c 100644
--- a/drivers/md/bcache/movinggc.c
+++ b/drivers/md/bcache/movinggc.c
@@ -145,8 +145,8 @@ static void read_moving(struct cache_set *c)
continue;
}

- io = kzalloc(sizeof(struct moving_io) + sizeof(struct bio_vec)
- * DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS),
+ io = kzalloc(struct_size(io, bio.bio.bi_inline_vecs,
+ DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS)),
GFP_KERNEL);
if (!io)
goto err;
--
2.27.0


2020-06-22 14:28:48

by Coly Li

[permalink] [raw]
Subject: Re: [PATCH][next] bcache: movinggc: Use struct_size() helper in kzalloc()

On 2020/6/18 06:33, Gustavo A. R. Silva wrote:
> Make use of the struct_size() helper instead of an open-coded version
> in order to avoid any potential type mistakes.
>
> This code was detected with the help of Coccinelle and, audited and
> fixed manually.
>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>

The patch looks good to me, and I assume you already test and verify the
change. I will add them in my for-test directory.

Thanks.

Coly Li

> ---
> drivers/md/bcache/movinggc.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/md/bcache/movinggc.c b/drivers/md/bcache/movinggc.c
> index 7891fb512736..b7dd2d75f58c 100644
> --- a/drivers/md/bcache/movinggc.c
> +++ b/drivers/md/bcache/movinggc.c
> @@ -145,8 +145,8 @@ static void read_moving(struct cache_set *c)
> continue;
> }
>
> - io = kzalloc(sizeof(struct moving_io) + sizeof(struct bio_vec)
> - * DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS),
> + io = kzalloc(struct_size(io, bio.bio.bi_inline_vecs,
> + DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS)),
> GFP_KERNEL);
> if (!io)
> goto err;
>