mtd: pxa3xx_nand: Correct offset calculation
authorKevin Smith <kevin.smith@elecsyscorp.com>
Thu, 14 Jan 2016 16:01:38 +0000 (16:01 +0000)
committerScott Wood <scottwood@freescale.com>
Fri, 12 Feb 2016 23:13:47 +0000 (17:13 -0600)
Correct some pointer math in initialization.  An offset was added
to a struct-typed pointer instead of one casted to a byte-size,
resulting in a much larger offset than intended.

Signed-off-by: Kevin Smith <kevin.smith@elecsyscorp.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Luka Perkov <luka.perkov@sartura.hr>
Cc: Scott Wood <scottwood@freescale.com>
drivers/mtd/nand/pxa3xx_nand.c

index 9202459..a83f6c2 100644 (file)
@@ -1486,8 +1486,8 @@ static int alloc_nand_resource(struct pxa3xx_nand_info *info)
        info->variant = pxa3xx_nand_get_variant();
        for (cs = 0; cs < pdata->num_cs; cs++) {
                mtd = &nand_info[cs];
-               chip = (struct nand_chip *)info +
-                       sizeof(struct pxa3xx_nand_host);
+               chip = (struct nand_chip *)
+                       ((u8 *)&info[1] + sizeof(*host) * cs);
                host = (struct pxa3xx_nand_host *)chip;
                info->host[cs] = host;
                host->mtd = mtd;