Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 332742
b: refs/heads/master
c: 1749c00
h: refs/heads/master
v: v3
  • Loading branch information
Akinobu Mita authored and David Woodhouse committed Sep 29, 2012
1 parent 7162017 commit 4727f37
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c5b8384abc11fd566a3633b7bd7d476ff04c31af
refs/heads/master: 1749c00ffc909db4ebf1b2f17fd52cdb6e7b149c
43 changes: 29 additions & 14 deletions trunk/drivers/mtd/tests/mtd_nandecctest.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <linux/random.h>
#include <linux/string.h>
#include <linux/bitops.h>
#include <linux/slab.h>
#include <linux/mtd/nand_ecc.h>

#if defined(CONFIG_MTD_NAND) || defined(CONFIG_MTD_NAND_MODULE)
Expand Down Expand Up @@ -31,16 +32,24 @@ static void dump_data_ecc(void *error_data, void *error_ecc, void *correct_data,
DUMP_PREFIX_NONE, 16, 1, correct_ecc, 3, false);
}

static unsigned char correct_data[512];
static unsigned char error_data[512];

static int nand_ecc_test(const size_t size)
{
unsigned char correct_ecc[3];
unsigned char error_ecc[3];
int err = 0;
void *error_data;
void *error_ecc;
void *correct_data;
void *correct_ecc;
char testname[30];

BUG_ON(sizeof(correct_data) < size);
error_data = kmalloc(size, GFP_KERNEL);
error_ecc = kmalloc(3, GFP_KERNEL);
correct_data = kmalloc(size, GFP_KERNEL);
correct_ecc = kmalloc(3, GFP_KERNEL);

if (!error_data || !error_ecc || !correct_data || !correct_ecc) {
err = -ENOMEM;
goto error;
}

sprintf(testname, "nand-ecc-%zu", size);

Expand All @@ -53,15 +62,21 @@ static int nand_ecc_test(const size_t size)
__nand_calculate_ecc(error_data, size, error_ecc);
__nand_correct_data(error_data, correct_ecc, error_ecc, size);

if (!memcmp(correct_data, error_data, size)) {
pr_info("mtd_nandecctest: ok - %s\n", testname);
return 0;
if (memcmp(correct_data, error_data, size)) {
pr_err("mtd_nandecctest: not ok - %s\n", testname);
dump_data_ecc(error_data, error_ecc, correct_data, correct_ecc,
size);
err = -EINVAL;
goto error;
}

pr_err("mtd_nandecctest: not ok - %s\n", testname);
dump_data_ecc(error_data, error_ecc, correct_data, correct_ecc, size);

return -EINVAL;
pr_info("mtd_nandecctest: ok - %s\n", testname);
error:
kfree(error_data);
kfree(error_ecc);
kfree(correct_data);
kfree(correct_ecc);

return err;
}

#else
Expand Down

0 comments on commit 4727f37

Please sign in to comment.