From patchwork Mon Sep 3 13:00:02 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v3, 07/11] mtd: mtd_nandecctest: generalize injecting bit errors function for ecc code Date: Mon, 03 Sep 2012 03:00:02 -0000 From: Akinobu Mita X-Patchwork-Id: 181359 Message-Id: <1346677206-13621-8-git-send-email-akinobu.mita@gmail.com> To: linux-mtd@lists.infradead.org Cc: Artem Bityutskiy , David Woodhouse , Akinobu Mita In order to inject deliberate bit errors into the ecc code which only has 3 bytes, this adjusts the bitops usage in inject_single_bit_error() which is currently only used for injecting into the 256 or 512 bytes data block. Signed-off-by: Akinobu Mita Cc: David Woodhouse Cc: linux-mtd@lists.infradead.org Cc: Artem Bityutskiy --- drivers/mtd/tests/mtd_nandecctest.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/tests/mtd_nandecctest.c b/drivers/mtd/tests/mtd_nandecctest.c index d3e8873..0274f73 100644 --- a/drivers/mtd/tests/mtd_nandecctest.c +++ b/drivers/mtd/tests/mtd_nandecctest.c @@ -7,13 +7,22 @@ #include #include +#include + #if defined(CONFIG_MTD_NAND) || defined(CONFIG_MTD_NAND_MODULE) +#ifdef __LITTLE_ENDIAN +#define __change_bit_le(nr, addr) __change_bit(nr, addr) +#else +#define __change_bit_le(nr, addr) \ + __change_bit((nr) ^ ((BITS_PER_LONG - 1) & ~0x7), addr) +#endif + static void inject_single_bit_error(void *data, size_t size) { - unsigned long offset = random32() % (size * BITS_PER_BYTE); + unsigned int offset = random32() % (size * BITS_PER_BYTE); - __change_bit(offset, data); + __change_bit_le(offset, data); } static void dump_data_ecc(void *error_data, void *error_ecc, void *correct_data,