nand_base.c: fix type of eccpos pointer
Subsystems (2)
PATCH 1/1 nand_base.c: fix type of eccpos pointer
The nand_base.c driver implicitly casts the uint32_t eccpos array to 'int *', which is not only not guaranteed to be the same sign as the source, but is not guaranteed to be the same size.
Fix by changing nand_base.c to use uint32_t
referencing the eccpos fields.
Signed-off-by Ben Dooks <[email protected]>
drivers/mtd/nand/nand_base.c +4 -4
@@ -768,7 +768,7 @@ static int nand_read_page_swecc(struct muint8_t *p = buf;uint8_t *ecc_calc = chip->buffers->ecccalc;uint8_t *ecc_code = chip->buffers->ecccode; -int *eccpos = chip->ecc.layout->eccpos; +uint32_t *eccpos = chip->ecc.layout->eccpos; chip->ecc.read_page_raw (mtd, chip, buf);
@@ -810,7 +810,7 @@ static int nand_read_page_hwecc(struct muint8_t *p = buf;uint8_t *ecc_calc = chip->buffers->ecccalc;uint8_t *ecc_code = chip->buffers->ecccode; -int *eccpos = chip->ecc.layout->eccpos; +uint32_t *eccpos = chip->ecc.layout->eccpos;for (i =0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { chip->ecc.hwctl (mtd,NAND_ECC_READ );
@@ -1416,7 +1416,7 @@ static void nand_write_page_swecc(structint eccsteps = chip->ecc.steps;uint8_t *ecc_calc = chip->buffers->ecccalc;const uint8_t *p = buf; -int *eccpos = chip->ecc.layout->eccpos; +uint32_t *eccpos = chip->ecc.layout->eccpos;/* Software ecc calculation */ for (i =0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize)
@@ -1442,7 +1442,7 @@ static void nand_write_page_hwecc(structint eccsteps = chip->ecc.steps;uint8_t *ecc_calc = chip->buffers->ecccalc;const uint8_t *p = buf; -int *eccpos = chip->ecc.layout->eccpos; +uint32_t *eccpos = chip->ecc.layout->eccpos;for (i =0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { chip->ecc.hwctl (mtd,NAND_ECC_WRITE );