lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 22 May 2023 17:38:13 +0200
From:   Miquel Raynal <miquel.raynal@...tlin.com>
To:     Arseniy Krasnov <AVKrasnov@...rdevices.ru>
Cc:     Liang Yang <liang.yang@...ogic.com>,
        Richard Weinberger <richard@....at>,
        Vignesh Raghavendra <vigneshr@...com>,
        Neil Armstrong <neil.armstrong@...aro.org>,
        Kevin Hilman <khilman@...libre.com>,
        Jerome Brunet <jbrunet@...libre.com>,
        Martin Blumenstingl <martin.blumenstingl@...glemail.com>,
        Jianxin Pan <jianxin.pan@...ogic.com>,
        Yixun Lan <yixun.lan@...ogic.com>, <oxffffaa@...il.com>,
        <kernel@...rdevices.ru>, <linux-mtd@...ts.infradead.org>,
        <linux-arm-kernel@...ts.infradead.org>,
        <linux-amlogic@...ts.infradead.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v4 3/5] mtd: rawnand: meson: always read whole OOB bytes

Hi Arseniy,

AVKrasnov@...rdevices.ru wrote on Mon, 15 May 2023 12:44:37 +0300:

> This changes size of read access to OOB area by reading all bytes of
> OOB (free bytes + ECC engine bytes).

This is normally up to the user (user in your case == jffs2). The
controller driver should expose a number of user accessible bytes and
then when users want the OOB area, they should access it entirely. On
top of that read, they can extract (or "write only") the user bytes.

> Signed-off-by: Arseniy Krasnov <AVKrasnov@...rdevices.ru>
> ---
>  drivers/mtd/nand/raw/meson_nand.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c
> index 8526a6b87720..a31106c943d7 100644
> --- a/drivers/mtd/nand/raw/meson_nand.c
> +++ b/drivers/mtd/nand/raw/meson_nand.c
> @@ -755,6 +755,30 @@ static int __meson_nfc_read_oob(struct nand_chip *nand, int page,
>  	u32 oob_bytes;
>  	u32 page_size;
>  	int ret;
> +	int i;
> +
> +	/* Read ECC codes and user bytes. */
> +	for (i = 0; i < nand->ecc.steps; i++) {
> +		u32 ecc_offs = nand->ecc.size * (i + 1) +
> +			       NFC_OOB_PER_ECC(nand) * i;
> +
> +		ret = nand_read_page_op(nand, page, 0, NULL, 0);
> +		if (ret)
> +			return ret;
> +
> +		/* Use temporary buffer, because 'nand_change_read_column_op()'
> +		 * seems work with some alignment, so we can't read data to
> +		 * 'oob_buf' directly.

DMA?

> +		 */
> +		ret = nand_change_read_column_op(nand, ecc_offs, meson_chip->oob_buf,
> +						 NFC_OOB_PER_ECC(nand), false);
> +		if (ret)
> +			return ret;
> +
> +		memcpy(oob_buf + i * NFC_OOB_PER_ECC(nand),
> +		       meson_chip->oob_buf,
> +		       NFC_OOB_PER_ECC(nand));
> +	}
>  
>  	oob_bytes = meson_nfc_get_oob_bytes(nand);
>  


Thanks,
Miquèl

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ