Messages in this thread | | | From | Steve Twiss <> | Subject | RE: [PATCH] regulator: da9062: Use struct_size() in devm_kzalloc() | Date | Mon, 25 Feb 2019 13:13:30 +0000 |
| |
Hi Gustavo,
On 23 February 2019 01:55, Gustavo A. R. Silva wrote:
> Subject: [PATCH] regulator: da9062: 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[]; > }; > > size = sizeof(struct foo) + count * sizeof(struct boo); > instance = alloc(size, GFP_KERNEL) > > Instead of leaving these open-coded and prone to type mistakes, we can > now use the new struct_size() helper:
Acked-by: Steve Twiss <stwiss.opensource@diasemi.com>
Thanks,
Regards, Steve
> > instance = alloc(struct_size(instance, entry, count), GFP_KERNEL) > > Notice that, in this case, variable size is not necessary, hence it is > removed. > > This code was detected with the help of Coccinelle. > > Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> > --- > drivers/regulator/da9062-regulator.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/regulator/da9062-regulator.c b/drivers/regulator/da9062- > regulator.c > index 4c5d6ad853f8..b064d8a19d4c 100644 > --- a/drivers/regulator/da9062-regulator.c > +++ b/drivers/regulator/da9062-regulator.c > @@ -992,7 +992,6 @@ static int da9062_regulator_probe(struct platform_device > *pdev) > struct regulator_config config = { }; > const struct da9062_regulator_info *rinfo; > int irq, n, ret; > - size_t size; > int max_regulators; > > switch (chip->chip_type) { > @@ -1010,9 +1009,8 @@ static int da9062_regulator_probe(struct > platform_device *pdev) > } > > /* Allocate memory required by usable regulators */ > - size = sizeof(struct da9062_regulators) + > - max_regulators * sizeof(struct da9062_regulator); > - regulators = devm_kzalloc(&pdev->dev, size, GFP_KERNEL); > + regulators = devm_kzalloc(&pdev->dev, struct_size(regulators, regulator, > + max_regulators), GFP_KERNEL); > if (!regulators) > return -ENOMEM; > > -- > 2.20.1
| |