mtd: parsers: qcom: incompatible with spi-nor 4k sectors
authorBaruch Siach <baruch@tkos.co.il>
Wed, 3 Mar 2021 16:48:16 +0000 (18:48 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 11 Mar 2021 10:59:26 +0000 (11:59 +0100)
Partition size and offset value are in block size units, which is the
same as 'erasesize'. But when 4K sectors are enabled erasesize is set to
4K. Bail out in that case.

Fixes: 803eb124e1a64 ("mtd: parsers: Add Qcom SMEM parser")
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/0a2611f885b894274436ded3ca78bc0440fca74a.1614790096.git.baruch@tkos.co.il
drivers/mtd/parsers/qcomsmempart.c

index 1c8a44d0d6e44720951f207cb32d6578a24a670f..d9083308f6ba61c24ebc216a38fd81fac75c535c 100644 (file)
@@ -65,6 +65,13 @@ static int parse_qcomsmem_part(struct mtd_info *mtd,
        int ret, i, numparts;
        char *name, *c;
 
+       if (IS_ENABLED(CONFIG_MTD_SPI_NOR_USE_4K_SECTORS)
+                       && mtd->type == MTD_NORFLASH) {
+               pr_err("%s: SMEM partition parser is incompatible with 4K sectors\n",
+                               mtd->name);
+               return -EINVAL;
+       }
+
        pr_debug("Parsing partition table info from SMEM\n");
        ptable = qcom_smem_get(SMEM_APPS, SMEM_AARM_PARTITION_TABLE, &len);
        if (IS_ERR(ptable)) {