diff options
author | Boris Brezillon <boris.brezillon@free-electrons.com> | 2016-06-06 13:59:13 +0200 |
---|---|---|
committer | Boris Brezillon <boris.brezillon@free-electrons.com> | 2016-07-11 08:40:12 +0200 |
commit | a92c721dc638b3745266ffe85617fe54dfadff19 (patch) | |
tree | a86c3be8470dff254e9a028cd73a51934e25abb4 /drivers/mtd | |
parent | mtd: nand: sunxi: prefer 1k ECC blocks when applicable (diff) | |
download | linux-a92c721dc638b3745266ffe85617fe54dfadff19.tar.xz linux-a92c721dc638b3745266ffe85617fe54dfadff19.zip |
mtd: nand: sunxi: check ecc->size values
Verify that the ecc->size value is either 512 or 1024 bytes.
This should always be the case if this field was assigned to the
nand->ecc_step_size_ds value, but can be wrong when the user overloaded
this value with the nand-ecc-step-size DT property.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/nand/sunxi_nand.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c index bb440b91096f..6e319bace724 100644 --- a/drivers/mtd/nand/sunxi_nand.c +++ b/drivers/mtd/nand/sunxi_nand.c @@ -1786,6 +1786,9 @@ static int sunxi_nand_hw_common_ecc_ctrl_init(struct mtd_info *mtd, if (!data) return -ENOMEM; + if (ecc->size != 512 && ecc->size != 1024) + return -EINVAL; + /* Prefer 1k ECC chunk over 512 ones */ if (ecc->size == 512 && mtd->writesize > 512) { ecc->size = 1024; |