aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/tests
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-03-02 19:33:54 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-03-02 19:33:54 -0500
commit48476df99894492a0f7239f2f3c9a2dde4ff38e2 (patch)
tree5a1b80f20449968f0de6e5bfbcda5e360e31ba1f /drivers/mtd/tests
parent37cae6ad4c484030fa972241533c32730ec79b7d (diff)
parent24dea0c9feccf699749f860fa2f4ccd84d30390d (diff)
Merge tag 'for-linus-20130301' of git://git.infradead.org/linux-mtd
Pull MTD update from David Woodhouse: "Fairly unexciting MTD merge for 3.9: - misc clean-ups in the MTD command-line partitioning parser (cmdlinepart) - add flash locking support for STmicro chips serial flash chips, as well as for CFI command set 2 chips. - new driver for the ELM error correction HW module found in various TI chips, enable the OMAP NAND driver to use the ELM HW error correction - added number of new serial flash IDs - various fixes and improvements in the gpmi NAND driver - bcm47xx NAND driver improvements - make the mtdpart module actually removable" * tag 'for-linus-20130301' of git://git.infradead.org/linux-mtd: (45 commits) mtd: map: BUG() in non handled cases mtd: bcm47xxnflash: use pr_fmt for module prefix in messages mtd: davinci_nand: Use managed resources mtd: mtd_torturetest can cause stack overflows mtd: physmap_of: Convert device allocation to managed devm_kzalloc() mtd: at91: atmel_nand: for PMECC, add code to check the ONFI parameter ECC requirement. mtd: atmel_nand: make pmecc-cap, pmecc-sector-size in dts is optional. mtd: atmel_nand: avoid to report an error when lookup table offset is 0. mtd: bcm47xxsflash: adjust names of bus-specific functions mtd: bcm47xxpart: improve probing of nvram partition mtd: bcm47xxpart: add support for other erase sizes mtd: bcm47xxnflash: register this as normal driver mtd: bcm47xxnflash: fix message mtd: bcm47xxsflash: register this as normal driver mtd: bcm47xxsflash: write number of written bytes mtd: gpmi: add sanity check for the ECC mtd: gpmi: set the Golois Field bit for mx6q's BCH mtd: devices: elm: Removes <xx> literals in elm DT node mtd: gpmi: fix a dereferencing freed memory error mtd: fix the wrong timeo for panic_nand_wait() ...
Diffstat (limited to 'drivers/mtd/tests')
-rw-r--r--drivers/mtd/tests/mtd_nandecctest.c10
-rw-r--r--drivers/mtd/tests/mtd_stresstest.c8
-rw-r--r--drivers/mtd/tests/mtd_torturetest.c25
3 files changed, 20 insertions, 23 deletions
diff --git a/drivers/mtd/tests/mtd_nandecctest.c b/drivers/mtd/tests/mtd_nandecctest.c
index db2f22e7966a..70106607c247 100644
--- a/drivers/mtd/tests/mtd_nandecctest.c
+++ b/drivers/mtd/tests/mtd_nandecctest.c
@@ -44,7 +44,7 @@ struct nand_ecc_test {
44static void single_bit_error_data(void *error_data, void *correct_data, 44static void single_bit_error_data(void *error_data, void *correct_data,
45 size_t size) 45 size_t size)
46{ 46{
47 unsigned int offset = random32() % (size * BITS_PER_BYTE); 47 unsigned int offset = prandom_u32() % (size * BITS_PER_BYTE);
48 48
49 memcpy(error_data, correct_data, size); 49 memcpy(error_data, correct_data, size);
50 __change_bit_le(offset, error_data); 50 __change_bit_le(offset, error_data);
@@ -55,9 +55,9 @@ static void double_bit_error_data(void *error_data, void *correct_data,
55{ 55{
56 unsigned int offset[2]; 56 unsigned int offset[2];
57 57
58 offset[0] = random32() % (size * BITS_PER_BYTE); 58 offset[0] = prandom_u32() % (size * BITS_PER_BYTE);
59 do { 59 do {
60 offset[1] = random32() % (size * BITS_PER_BYTE); 60 offset[1] = prandom_u32() % (size * BITS_PER_BYTE);
61 } while (offset[0] == offset[1]); 61 } while (offset[0] == offset[1]);
62 62
63 memcpy(error_data, correct_data, size); 63 memcpy(error_data, correct_data, size);
@@ -68,7 +68,7 @@ static void double_bit_error_data(void *error_data, void *correct_data,
68 68
69static unsigned int random_ecc_bit(size_t size) 69static unsigned int random_ecc_bit(size_t size)
70{ 70{
71 unsigned int offset = random32() % (3 * BITS_PER_BYTE); 71 unsigned int offset = prandom_u32() % (3 * BITS_PER_BYTE);
72 72
73 if (size == 256) { 73 if (size == 256) {
74 /* 74 /*
@@ -76,7 +76,7 @@ static unsigned int random_ecc_bit(size_t size)
76 * and 17th bit) in ECC code for 256 byte data block 76 * and 17th bit) in ECC code for 256 byte data block
77 */ 77 */
78 while (offset == 16 || offset == 17) 78 while (offset == 16 || offset == 17)
79 offset = random32() % (3 * BITS_PER_BYTE); 79 offset = prandom_u32() % (3 * BITS_PER_BYTE);
80 } 80 }
81 81
82 return offset; 82 return offset;
diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c
index 2d7e6cffd6d4..787f539d16ca 100644
--- a/drivers/mtd/tests/mtd_stresstest.c
+++ b/drivers/mtd/tests/mtd_stresstest.c
@@ -55,7 +55,7 @@ static int rand_eb(void)
55 unsigned int eb; 55 unsigned int eb;
56 56
57again: 57again:
58 eb = random32(); 58 eb = prandom_u32();
59 /* Read or write up 2 eraseblocks at a time - hence 'ebcnt - 1' */ 59 /* Read or write up 2 eraseblocks at a time - hence 'ebcnt - 1' */
60 eb %= (ebcnt - 1); 60 eb %= (ebcnt - 1);
61 if (bbt[eb]) 61 if (bbt[eb])
@@ -67,7 +67,7 @@ static int rand_offs(void)
67{ 67{
68 unsigned int offs; 68 unsigned int offs;
69 69
70 offs = random32(); 70 offs = prandom_u32();
71 offs %= bufsize; 71 offs %= bufsize;
72 return offs; 72 return offs;
73} 73}
@@ -76,7 +76,7 @@ static int rand_len(int offs)
76{ 76{
77 unsigned int len; 77 unsigned int len;
78 78
79 len = random32(); 79 len = prandom_u32();
80 len %= (bufsize - offs); 80 len %= (bufsize - offs);
81 return len; 81 return len;
82} 82}
@@ -191,7 +191,7 @@ static int do_write(void)
191 191
192static int do_operation(void) 192static int do_operation(void)
193{ 193{
194 if (random32() & 1) 194 if (prandom_u32() & 1)
195 return do_read(); 195 return do_read();
196 else 196 else
197 return do_write(); 197 return do_write();
diff --git a/drivers/mtd/tests/mtd_torturetest.c b/drivers/mtd/tests/mtd_torturetest.c
index c4cde1e9eddb..3a9f6a6a79f9 100644
--- a/drivers/mtd/tests/mtd_torturetest.c
+++ b/drivers/mtd/tests/mtd_torturetest.c
@@ -208,7 +208,7 @@ static inline int write_pattern(int ebnum, void *buf)
208static int __init tort_init(void) 208static int __init tort_init(void)
209{ 209{
210 int err = 0, i, infinite = !cycles_count; 210 int err = 0, i, infinite = !cycles_count;
211 int bad_ebs[ebcnt]; 211 int *bad_ebs;
212 212
213 printk(KERN_INFO "\n"); 213 printk(KERN_INFO "\n");
214 printk(KERN_INFO "=================================================\n"); 214 printk(KERN_INFO "=================================================\n");
@@ -250,28 +250,24 @@ static int __init tort_init(void)
250 250
251 err = -ENOMEM; 251 err = -ENOMEM;
252 patt_5A5 = kmalloc(mtd->erasesize, GFP_KERNEL); 252 patt_5A5 = kmalloc(mtd->erasesize, GFP_KERNEL);
253 if (!patt_5A5) { 253 if (!patt_5A5)
254 pr_err("error: cannot allocate memory\n");
255 goto out_mtd; 254 goto out_mtd;
256 }
257 255
258 patt_A5A = kmalloc(mtd->erasesize, GFP_KERNEL); 256 patt_A5A = kmalloc(mtd->erasesize, GFP_KERNEL);
259 if (!patt_A5A) { 257 if (!patt_A5A)
260 pr_err("error: cannot allocate memory\n");
261 goto out_patt_5A5; 258 goto out_patt_5A5;
262 }
263 259
264 patt_FF = kmalloc(mtd->erasesize, GFP_KERNEL); 260 patt_FF = kmalloc(mtd->erasesize, GFP_KERNEL);
265 if (!patt_FF) { 261 if (!patt_FF)
266 pr_err("error: cannot allocate memory\n");
267 goto out_patt_A5A; 262 goto out_patt_A5A;
268 }
269 263
270 check_buf = kmalloc(mtd->erasesize, GFP_KERNEL); 264 check_buf = kmalloc(mtd->erasesize, GFP_KERNEL);
271 if (!check_buf) { 265 if (!check_buf)
272 pr_err("error: cannot allocate memory\n");
273 goto out_patt_FF; 266 goto out_patt_FF;
274 } 267
268 bad_ebs = kcalloc(ebcnt, sizeof(*bad_ebs), GFP_KERNEL);
269 if (!bad_ebs)
270 goto out_check_buf;
275 271
276 err = 0; 272 err = 0;
277 273
@@ -290,7 +286,6 @@ static int __init tort_init(void)
290 /* 286 /*
291 * Check if there is a bad eraseblock among those we are going to test. 287 * Check if there is a bad eraseblock among those we are going to test.
292 */ 288 */
293 memset(&bad_ebs[0], 0, sizeof(int) * ebcnt);
294 if (mtd_can_have_bb(mtd)) { 289 if (mtd_can_have_bb(mtd)) {
295 for (i = eb; i < eb + ebcnt; i++) { 290 for (i = eb; i < eb + ebcnt; i++) {
296 err = mtd_block_isbad(mtd, (loff_t)i * mtd->erasesize); 291 err = mtd_block_isbad(mtd, (loff_t)i * mtd->erasesize);
@@ -394,6 +389,8 @@ out:
394 389
395 pr_info("finished after %u erase cycles\n", 390 pr_info("finished after %u erase cycles\n",
396 erase_cycles); 391 erase_cycles);
392 kfree(bad_ebs);
393out_check_buf:
397 kfree(check_buf); 394 kfree(check_buf);
398out_patt_FF: 395out_patt_FF:
399 kfree(patt_FF); 396 kfree(patt_FF);