diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-01-09 00:09:46 +0300 |
---|---|---|
committer | Boris Brezillon <bbrezillon@kernel.org> | 2019-01-15 22:49:33 +0300 |
commit | 2037f9d8c242af5d549dd5ba32ff1ec1f49ceaad (patch) | |
tree | 5070dcf5a842fc5904ec4d5f6f4365b5ea248855 | |
parent | 04b4c06caf2b810f0ce4822f6611ed35326ca11a (diff) | |
download | linux-2037f9d8c242af5d549dd5ba32ff1ec1f49ceaad.tar.xz |
mtd: lpddr: 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;
void *entry[];
};
instance = kzalloc(sizeof(struct foo) + sizeof(void *) * count, 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.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
-rw-r--r-- | drivers/mtd/lpddr/qinfo_probe.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/mtd/lpddr/qinfo_probe.c b/drivers/mtd/lpddr/qinfo_probe.c index 69f2112340b1..175bdc3b72f4 100644 --- a/drivers/mtd/lpddr/qinfo_probe.c +++ b/drivers/mtd/lpddr/qinfo_probe.c @@ -181,8 +181,8 @@ static struct lpddr_private *lpddr_probe_chip(struct map_info *map) lpddr.numchips = 1; numvirtchips = lpddr.numchips * lpddr.qinfo->HWPartsNum; - retlpddr = kzalloc(sizeof(struct lpddr_private) + - numvirtchips * sizeof(struct flchip), GFP_KERNEL); + retlpddr = kzalloc(struct_size(retlpddr, chips, numvirtchips), + GFP_KERNEL); if (!retlpddr) return NULL; |