summaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorStefan Riedmueller <s.riedmueller@phytec.de>2020-05-04 15:21:48 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2020-05-05 07:43:07 +0200
commitf62bb30044dbad752bf0414239f793585d66960c (patch)
treefb4d35f693164dfd4f47ade44d3395641a2f14b6 /drivers/mtd
parent8005a5be7e284164475552987974b7a8d7a5198e (diff)
downloadbarebox-f62bb30044dbad752bf0414239f793585d66960c.tar.gz
barebox-f62bb30044dbad752bf0414239f793585d66960c.tar.xz
mtd: mtdraw: Fix cdev size calculation for large NANDs
Raw size for large NAND devices (> 4 GB) can exceed 32 bits, so we need 64 bit types as factors. Both factors are of 32 bit types, as such is the return value. At least one factor needs to be 64 bit type when calculating the size. Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de> Signed-off-by: Christian Hemp <c.hemp@phytec.de> Signed-off-by: Yunus Bas <y.bas@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/mtdraw.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mtd/mtdraw.c b/drivers/mtd/mtdraw.c
index f63da7b3b2..b71619244b 100644
--- a/drivers/mtd/mtdraw.c
+++ b/drivers/mtd/mtdraw.c
@@ -306,7 +306,7 @@ static int add_mtdraw_device(struct mtd_info *mtd, const char *devname, void **p
mtdraw->mtd = mtd;
mtdraw->cdev.ops = (struct cdev_operations *)&mtd_raw_fops;
- mtdraw->cdev.size = mtd_div_by_wb(mtd->size, mtd) * mtdraw->rps;
+ mtdraw->cdev.size = (loff_t)mtd_div_by_wb(mtd->size, mtd) * mtdraw->rps;
mtdraw->cdev.name = basprintf("%s.raw", mtd->cdev.name);
mtdraw->cdev.priv = mtdraw;
mtdraw->cdev.dev = &mtd->class_dev;