mtd: mtdpart: use uint64_t instead of int for cur_off
authorMartin Kaistra <martin.kaistra@linutronix.de>
Mon, 13 Jul 2020 12:40:02 +0000 (14:40 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 17 Jul 2020 14:47:19 +0000 (10:47 -0400)
The types of "offset" and "size" of "struct mtd_partition" are uint64_t,
while mtd_parse_partitions() uses int to work with these values. When
the offset reaches 2GB, it is interpreted as a negative value, which
leads to error messages like

mtd: partition "<partition name>" is out of reach -- disabled

eg. when using the "ubi part" command.

Fix this by using uint64_t for cur_off and cur_sz.

Signed-off-by: Martin Kaistra <martin.kaistra@linutronix.de>
Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de>
Reviewed-by: Heiko Schocher <hs@denx.de>
drivers/mtd/mtdpart.c

index d1f6029..d064ac3 100644 (file)
@@ -207,7 +207,7 @@ int mtd_parse_partitions(struct mtd_info *parent, const char **_mtdparts,
 {
        struct mtd_partition partition = {}, *parts;
        const char *mtdparts = *_mtdparts;
-       int cur_off = 0, cur_sz = 0;
+       uint64_t cur_off = 0, cur_sz = 0;
        int nparts = 0;
        int ret, idx;
        u64 sz;