2019-04-03 16:22:10

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH][next] iwlwifi: lib: Use struct_size() helper

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, change the following form:

sizeof(*pattern_cmd) +
wowlan->n_patterns * sizeof(struct iwlagn_wowlan_pattern)

to :

struct_size(pattern_cmd, patterns, wowlan->n_patterns)

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/dvm/lib.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
index b2f172d4f78a..cae9cd438697 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
@@ -1022,8 +1022,7 @@ int iwlagn_send_patterns(struct iwl_priv *priv,
if (!wowlan->n_patterns)
return 0;

- cmd.len[0] = sizeof(*pattern_cmd) +
- wowlan->n_patterns * sizeof(struct iwlagn_wowlan_pattern);
+ cmd.len[0] = struct_size(pattern_cmd, patterns, wowlan->n_patterns);

pattern_cmd = kmalloc(cmd.len[0], GFP_KERNEL);
if (!pattern_cmd)
--
2.21.0



2019-05-14 05:16:57

by Luciano Coelho

[permalink] [raw]
Subject: Re: [PATCH][next] iwlwifi: lib: Use struct_size() helper

On Wed, 2019-04-03 at 10:59 -0500, 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, in particular in the
> context in which this code is being used.
>
> So, change the following form:
>
> sizeof(*pattern_cmd) +
> wowlan->n_patterns * sizeof(struct
> iwlagn_wowlan_pattern)
>
> to :
>
> struct_size(pattern_cmd, patterns, wowlan->n_patterns)
>
> This code was detected with the help of Coccinelle.
>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> drivers/net/wireless/intel/iwlwifi/dvm/lib.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
> b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
> index b2f172d4f78a..cae9cd438697 100644
> --- a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
> +++ b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
> @@ -1022,8 +1022,7 @@ int iwlagn_send_patterns(struct iwl_priv *priv,
> if (!wowlan->n_patterns)
> return 0;
>
> - cmd.len[0] = sizeof(*pattern_cmd) +
> - wowlan->n_patterns * sizeof(struct
> iwlagn_wowlan_pattern);
> + cmd.len[0] = struct_size(pattern_cmd, patterns, wowlan-
> >n_patterns);
>
> pattern_cmd = kmalloc(cmd.len[0], GFP_KERNEL);
> if (!pattern_cmd)

Thanks! Applied to our internal tree and it will reach the mainline
following our normal upstreaming process.

--
Cheers,
Luca.