iavf: use struct_size() in kzalloc()
Subsystems (3)
PATCH 1/1 iavf: 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[];
};size = sizeof(struct foo) + count * sizeof(struct boo); instance = kzalloc(size, 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)
Notice that, in this case, variable bufsz is not necessary, hence it is removed.
This code was detected with the help of Coccinelle.
--- drivers/net/ethernet/intel/iavf/iavf_main.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/net/ethernet/intel/iavf/iavf_main.c +4 -5
@@ -3353,7 +3353,7 @@ static void iavf_init_task(struct work_struct *work)struct net_device *netdev = adapter->netdev;struct iavf_hw *hw = &adapter->hw;struct pci_dev *pdev = adapter->pdev; -int err, bufsz; +int err;switch (adapter->state) {case __IAVF_STARTUP:
@@ -3423,10 +3423,9 @@ static void iavf_init_task(struct work_struct *work)case __IAVF_INIT_GET_RESOURCES:/* aq msg sent, awaiting reply */ if (!adapter->vf_res) { - bufsz =sizeof (struct virtchnl_vf_resource ) + - (IAVF_MAX_VF_VSI * -sizeof (struct virtchnl_vsi_resource )); - adapter->vf_res =kzalloc (bufsz,GFP_KERNEL ); + adapter->vf_res =kzalloc (struct_size (adapter->vf_res, + vsi_res,IAVF_MAX_VF_VSI ), +GFP_KERNEL );if (!adapter->vf_res) goto err; }
Signature · 1 line
2.21.0
Quoted 20 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[]; };size = sizeof(struct foo) + count * sizeof(struct boo); instance =
kzalloc(size, 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)Notice that, in this case, variable bufsz is not necessary, hence it is removed.
Quoted 6 lines
This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>--- drivers/net/ethernet/intel/iavf/iavf_main.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
Thanks Gustavo, I will queue this up.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20190329/328065ff/attachment-0001.asc>