net: hns: Use struct_size() in devm_kzalloc()
Subsystems (3)
PATCH 1/1 net: hns: Use struct_size() in devm_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 = devm_kzalloc(dev, 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 = devm_kzalloc(dev, struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
--- drivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.c +3 -2
@@ -788,8 +788,9 @@ int hns_rcb_common_get_cfg(struct dsaf_device *dsaf_dev,int ring_num =hns_rcb_get_ring_num (dsaf_dev); rcb_common = -devm_kzalloc (dsaf_dev->dev,sizeof (*rcb_common) + - ring_num *sizeof (struct ring_pair_cb ),GFP_KERNEL ); +devm_kzalloc (dsaf_dev->dev, +struct_size (rcb_common, ring_pair_cb, ring_num), +GFP_KERNEL );if (!rcb_common) {dev_err (dsaf_dev->dev,"rcb common devm_kzalloc fail!\n" );return -ENOMEM ;
Signature · 1 line
2.20.1
From: "Gustavo A. R. Silva" <[email protected]>
Date: Tue, 15 Jan 2019 19:04:56 -0600
Quoted 11 lines
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 =
devm_kzalloc(dev, sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Quoted 8 lines
Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
devm_kzalloc(dev, 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]>
Applied.