iwlwifi: mvm: use struct_size() in kzalloc()
Subsystems (3)
PATCH 1/1 iwlwifi: mvm: use struct_size() in kzalloc()
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.
--- drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c +5 -9
@@ -947,14 +947,12 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,const __le16 *ch_section;if (cfg->nvm_type !=IWL_NVM_EXT ) - data =kzalloc (sizeof (*data) + -sizeof (struct ieee80211_channel ) * -IWL_NVM_NUM_CHANNELS , + data =kzalloc (struct_size (data, channels, +IWL_NVM_NUM_CHANNELS ),GFP_KERNEL );else - data =kzalloc (sizeof (*data) + -sizeof (struct ieee80211_channel ) * -IWL_NVM_NUM_CHANNELS_EXT , + data =kzalloc (struct_size (data, channels, +IWL_NVM_NUM_CHANNELS_EXT ),GFP_KERNEL );if (!data)return NULL ;
@@ -1444,9 +1442,7 @@ struct iwl_nvm_data *iwl_get_nvm(struct iwl_trans *trans,if (empty_otp)IWL_INFO (trans,"OTP is empty\n" ); - nvm =kzalloc (sizeof (*nvm) + -sizeof (struct ieee80211_channel ) *IWL_NUM_CHANNELS , -GFP_KERNEL ); + nvm =kzalloc (struct_size (nvm, channels,IWL_NUM_CHANNELS ),GFP_KERNEL );if (!nvm) { ret = -ENOMEM ; goto out;
Signature · 1 line
2.20.1
Quoted 18 lines · Gustavo A. R. Silva
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 newstruct_size()helper:
Quoted 6 lines
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 <[email protected]>---
Dropped. This is a duplicate.
--
Luca.