Using nand_change_read_column_op() in nand_onfi_detect()
Miquel Raynal
miquel.raynal at bootlin.com
Tue May 14 04:53:16 PDT 2024
Hi Sascha,
s.hauer at pengutronix.de wrote on Tue, 14 May 2024 13:48:35 +0200:
> Hi all,
>
> I am currently stumbling over this in nand_onfi_detect():
>
> for (i = 0; i < ONFI_PARAM_PAGES; i++) {
> if (!i)
> ret = nand_read_param_page_op(chip, 0, &pbuf[i],
> sizeof(*pbuf));
> else if (use_datain)
> ret = nand_read_data_op(chip, &pbuf[i], sizeof(*pbuf),
> true, false);
> else
> ret = nand_change_read_column_op(chip, sizeof(*pbuf) * i,
> &pbuf[i], sizeof(*pbuf),
> true);
> ...
> }
>
> nand_change_read_column_op() heavily uses mtd->writesize and bails out
> with an error when the writesize is 0. mtd->writesize is still
> uninitialised at that point, it's initialized a few lines further down
> in the same function. It looks like this code never worked as expected.
>
> Also it seems use_datain is always 0, see 1), so existing code only ever
> reads the first parameter page.
>
> The same pattern is in nand_jedec_detect() as well.
>
> Not sure what we make from this.
>
> Sascha
>
> 1) https://lore.kernel.org/linux-mtd/20240514103355.817056-1-s.hauer@pengutronix.de/T/#u
>
Sorry for not mentioning that before, I sent two fixes about that:
https://lore.kernel.org/linux-mtd/20240507160546.130255-1-miquel.raynal@bootlin.com/T/#t
Thanks,
Miquèl
More information about the linux-mtd
mailing list