On Mon, Dec 16, 2013 at 07:19:01PM +0200, Nikita Kiryanov wrote: > When switching ecc mode, omap_select_ecc_scheme() assigns the appropriate > values > into the current nand chip's ecc.layout struct. This is done under the > assumption that the struct exists only to store values, so it is OK to > overwrite > it, but there is at least one situation where this assumption is incorrect: > > When switching to 1 bit hamming code sw ecc, the job of assigning layout data > is outsourced to nand_scan_tail(), which simply assigns into ecc.layout a > pointer to an existing struct prefilled with the appropriate values. This > struct > doubles as both data and layout definition, and therefore shouldn't be > overwritten, but on the next switch to hardware ecc, this is exactly what's > going to happen. The next time the user switches to software ecc, they're > going to get a messed up ecc layout. > > Prevent this and possible similar bugs by explicitly using the > private-to-omap_gpmc.c omap_ecclayout struct when switching ecc mode. > > Cc: Scott Wood <scottw...@freescale.com> > Cc: Pekon Gupta <pe...@ti.com> > Signed-off-by: Nikita Kiryanov <nik...@compulab.co.il> > > --- > drivers/mtd/nand/omap_gpmc.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-)
Applied to u-boot-nand-flash.git -Scott _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot