Add patches and config for 4.14, refreshed from 4.9. Signed-off-by: Matti Laakso <matti.laakso@outlook.com>
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 42ebff638003be18fab503b37de4ad7853244e95 Mon Sep 17 00:00:00 2001
 | 
						|
From: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
 | 
						|
Date: Sat, 25 Feb 2017 15:58:22 +0000
 | 
						|
Subject: mtd: nand: Check length of ID before reading bits per cell
 | 
						|
 | 
						|
The table-based NAND identification currently reads the number
 | 
						|
of bits per cell from the 3rd byte of the extended ID. This is done
 | 
						|
for the so-called 'full ID' devices; i.e. devices that have a known
 | 
						|
length ID.
 | 
						|
 | 
						|
However, if the ID length is shorter than three, there's no 3rd byte,
 | 
						|
and so it's wrong to read the bits per cell from there. Fix this by
 | 
						|
adding a check for the ID length.
 | 
						|
 | 
						|
(picked from http://lists.infradead.org/pipermail/linux-mtd/2014-December/056764.html)
 | 
						|
 | 
						|
Signed-off-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
 | 
						|
---
 | 
						|
 drivers/mtd/nand/nand_base.c | 3 ++-
 | 
						|
 1 file changed, 2 insertions(+), 1 deletion(-)
 | 
						|
 | 
						|
--- a/drivers/mtd/nand/nand_base.c
 | 
						|
+++ b/drivers/mtd/nand/nand_base.c
 | 
						|
@@ -3803,7 +3803,8 @@ static bool find_full_id_nand(struct nan
 | 
						|
 		mtd->erasesize = type->erasesize;
 | 
						|
 		mtd->oobsize = type->oobsize;
 | 
						|
 
 | 
						|
-		chip->bits_per_cell = nand_get_bits_per_cell(id_data[2]);
 | 
						|
+		if (type->id_len > 2)
 | 
						|
+			chip->bits_per_cell = nand_get_bits_per_cell(id_data[2]);
 | 
						|
 		chip->chipsize = (uint64_t)type->chipsize << 20;
 | 
						|
 		chip->options |= type->options;
 | 
						|
 		chip->ecc_strength_ds = NAND_ECC_STRENGTH(type);
 |