[PATCH] mtd onenand driver: check correct manufacturer

This (and the three subsequent patches) is working well on OMAP H4 with
2.6.15-rc4 kernel and passes the LTP fs test.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Kyungmin Park and committed by Linus Torvalds 37b1cc39 ee219e5e

+10 -7
+10 -6
drivers/mtd/onenand/onenand_base.c
··· 1346 1346 1347 1347 static const struct onenand_manufacturers onenand_manuf_ids[] = { 1348 1348 {ONENAND_MFR_SAMSUNG, "Samsung"}, 1349 - {ONENAND_MFR_UNKNOWN, "Unknown"} 1350 1349 }; 1351 1350 1352 1351 /** ··· 1356 1357 */ 1357 1358 static int onenand_check_maf(int manuf) 1358 1359 { 1360 + int size = ARRAY_SIZE(onenand_manuf_ids); 1361 + char *name; 1359 1362 int i; 1360 1363 1361 - for (i = 0; onenand_manuf_ids[i].id; i++) { 1364 + for (i = 0; i < size; i++) 1362 1365 if (manuf == onenand_manuf_ids[i].id) 1363 1366 break; 1364 - } 1365 1367 1366 - printk(KERN_DEBUG "OneNAND Manufacturer: %s (0x%0x)\n", 1367 - onenand_manuf_ids[i].name, manuf); 1368 + if (i < size) 1369 + name = onenand_manuf_ids[i].name; 1370 + else 1371 + name = "Unknown"; 1368 1372 1369 - return (i != ONENAND_MFR_UNKNOWN); 1373 + printk(KERN_DEBUG "OneNAND Manufacturer: %s (0x%0x)\n", name, manuf); 1374 + 1375 + return (i == size); 1370 1376 } 1371 1377 1372 1378 /**
-1
include/linux/mtd/onenand.h
··· 140 140 * OneNAND Flash Manufacturer ID Codes 141 141 */ 142 142 #define ONENAND_MFR_SAMSUNG 0xec 143 - #define ONENAND_MFR_UNKNOWN 0x00 144 143 145 144 /** 146 145 * struct nand_manufacturers - NAND Flash Manufacturer ID Structure