]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mtd: lpddr: Use struct_size() in kzalloc()
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Tue, 8 Jan 2019 21:09:46 +0000 (15:09 -0600)
committerBoris Brezillon <bbrezillon@kernel.org>
Tue, 15 Jan 2019 19:49:33 +0000 (20:49 +0100)
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>
drivers/mtd/lpddr/qinfo_probe.c

index 69f2112340b19dc94639ff90bd87114490767168..175bdc3b72f4efb56b56221ae644122642f7bfe7 100644 (file)
@@ -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;