 55c32a6ce3
			
		
	
	55c32a6ce3
	
	
	
		
			
			Refresh upstreamed patch with kernel version tag and replace them with the upstream version. For krait-cc patch rework them with the upstream changes. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 7df140e84a75c89962feef659d686303d3ce75e5 Mon Sep 17 00:00:00 2001
 | |
| From: Christian Marangi <ansuelsmth@gmail.com>
 | |
| Date: Fri, 21 Oct 2022 18:53:04 +0200
 | |
| Subject: [PATCH] mtd: rawnand: qcom: handle ret from parse with codeword_fixup
 | |
| 
 | |
| With use_codeword_fixup enabled, any return from
 | |
| mtd_device_parse_register gets overwritten. Aside from the clear bug, this
 | |
| is also problematic as a parser can EPROBE_DEFER and because this is not
 | |
| correctly handled, the nand is never rescanned later in the bootup
 | |
| process.
 | |
| 
 | |
| An example of this problem is when smem requires additional time to be
 | |
| probed and nandc use qcomsmempart as parser. Parser will return
 | |
| EPROBE_DEFER but in the current code this ret gets overwritten by
 | |
| qcom_nand_host_parse_boot_partitions and qcom_nand_host_init_and_register
 | |
| return 0.
 | |
| 
 | |
| Correctly handle the return code from mtd_device_parse_register so that
 | |
| any error from this function is not ignored.
 | |
| 
 | |
| Fixes: 862bdedd7f4b ("mtd: nand: raw: qcom_nandc: add support for unprotected spare data pages")
 | |
| Cc: stable@vger.kernel.org # v6.0+
 | |
| Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 | |
| Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
 | |
| Link: https://lore.kernel.org/linux-mtd/20221021165304.19991-1-ansuelsmth@gmail.com
 | |
| ---
 | |
|  drivers/mtd/nand/raw/qcom_nandc.c | 12 +++++++-----
 | |
|  1 file changed, 7 insertions(+), 5 deletions(-)
 | |
| 
 | |
| --- a/drivers/mtd/nand/raw/qcom_nandc.c
 | |
| +++ b/drivers/mtd/nand/raw/qcom_nandc.c
 | |
| @@ -3157,16 +3157,18 @@ static int qcom_nand_host_init_and_regis
 | |
|  
 | |
|  	ret = mtd_device_parse_register(mtd, probes, NULL, NULL, 0);
 | |
|  	if (ret)
 | |
| -		nand_cleanup(chip);
 | |
| +		goto err;
 | |
|  
 | |
|  	if (nandc->props->use_codeword_fixup) {
 | |
|  		ret = qcom_nand_host_parse_boot_partitions(nandc, host, dn);
 | |
| -		if (ret) {
 | |
| -			nand_cleanup(chip);
 | |
| -			return ret;
 | |
| -		}
 | |
| +		if (ret)
 | |
| +			goto err;
 | |
|  	}
 | |
|  
 | |
| +	return 0;
 | |
| +
 | |
| +err:
 | |
| +	nand_cleanup(chip);
 | |
|  	return ret;
 | |
|  }
 | |
|  
 |