Re: [PATCH][next] NTB: Use struct_size() helper in devm_kzalloc()

From: Logan Gunthorpe
Date: Fri Jun 19 2020 - 15:11:03 EST




On 2020-06-19 11:25 a.m., 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. Also, remove unnecessary
> variable _struct_size_.
>
> This code was detected with the help of Coccinelle and, audited and
> fixed manually.
>
> Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83
> Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>

Cool, I didn't know that existed! Thanks!

Reviewed-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>

> ---
> drivers/ntb/test/ntb_msi_test.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/ntb/test/ntb_msi_test.c b/drivers/ntb/test/ntb_msi_test.c
> index 99d826ed9c34..7095ecd6223a 100644
> --- a/drivers/ntb/test/ntb_msi_test.c
> +++ b/drivers/ntb/test/ntb_msi_test.c
> @@ -319,7 +319,6 @@ static void ntb_msit_remove_dbgfs(struct ntb_msit_ctx *nm)
> static int ntb_msit_probe(struct ntb_client *client, struct ntb_dev *ntb)
> {
> struct ntb_msit_ctx *nm;
> - size_t struct_size;
> int peers;
> int ret;
>
> @@ -352,9 +351,7 @@ static int ntb_msit_probe(struct ntb_client *client, struct ntb_dev *ntb)
> return ret;
> }
>
> - struct_size = sizeof(*nm) + sizeof(*nm->peers) * peers;
> -
> - nm = devm_kzalloc(&ntb->dev, struct_size, GFP_KERNEL);
> + nm = devm_kzalloc(&ntb->dev, struct_size(nm, peers, peers), GFP_KERNEL);
> if (!nm)
> return -ENOMEM;
>
>