mtd: brcmnand: Fix pointer type-cast in brcmnand_write()
authorAnup Patel <anup.patel@broadcom.com>
Fri, 2 Oct 2015 17:56:42 +0000 (23:26 +0530)
committerBrian Norris <computersforpeace@gmail.com>
Mon, 12 Oct 2015 21:17:30 +0000 (14:17 -0700)
We should always type-cast pointer to "long" or "unsigned long"
because size of pointer is same as machine word size. This will
avoid pointer type-cast issues on both 32bit and 64bit systems.

This patch fixes pointer type-cast issue in brcmnand_write()
as-per above info.

Signed-off-by: Anup Patel <anup.patel@broadcom.com>
Reviewed-by: Vikram Prakash <vikramp@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/brcmnand/brcmnand.c

index 048e4e0..ea319a4 100644 (file)
@@ -1544,9 +1544,9 @@ static int brcmnand_write(struct mtd_info *mtd, struct nand_chip *chip,
 
        dev_dbg(ctrl->dev, "write %llx <- %p\n", (unsigned long long)addr, buf);
 
-       if (unlikely((u32)buf & 0x03)) {
+       if (unlikely((unsigned long)buf & 0x03)) {
                dev_warn(ctrl->dev, "unaligned buffer: %p\n", buf);
-               buf = (u32 *)((u32)buf & ~0x03);
+               buf = (u32 *)((unsigned long)buf & ~0x03);
        }
 
        brcmnand_wp(mtd, 0);