mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Manually rebased patches: ath79/patches-5.4/910-unaligned_access_hacks.patch bcm27xx/patches-5.4/950-0135-spi-spi-bcm2835-Disable-forced-software-CS.patch bcm27xx/patches-5.4/950-0414-SQUASH-Fix-spi-driver-compiler-warnings.patch ipq806x/patches-5.4/093-4-v5.8-ipq806x-PCI-qcom-Use-bulk-clk-api-and-assert-on-error.patch Removed since could be reverse-applied by quilt and found to be included upstream: ipq806x/patches-5.4/096-PCI-qcom-Make-sure-PCIe-is-reset-before-init-for-rev.patch All modifications made by update_kernel.sh Build system: x86_64 Build-tested: ipq806x/R7800, ath79/generic, bcm27xx/bcm2711 Run-tested: ipq806x/R7800 No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> [refresh altered targets after rebase] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Sven Eckelmann <sven@narfation.org>
 | |
| Date: Sun, 22 Nov 2020 00:48:33 +0100
 | |
| Subject: [PATCH RFC] mtd: parser: cmdline: Fix parsing of part-names with colons
 | |
| 
 | |
| Some devices (especially QCA ones) are already using hardcoded partition
 | |
| names with colons in it. The OpenMesh A62 for example provides following
 | |
| mtd relevant information via cmdline:
 | |
| 
 | |
|   root=31:11 mtdparts=spi0.0:256k(0:SBL1),128k(0:MIBIB),384k(0:QSEE),64k(0:CDT),64k(0:DDRPARAMS),64k(0:APPSBLENV),512k(0:APPSBL),64k(0:ART),64k(custom),64k(0:KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive) rootfsname=rootfs rootwait
 | |
| 
 | |
| The change to split only on the last colon between mtd-id and partitions
 | |
| will cause newpart to see following string for the first partition:
 | |
| 
 | |
|   KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive)
 | |
| 
 | |
| Such a partition list cannot be parsed and thus the device fails to boot.
 | |
| 
 | |
| Avoid this behavior by making sure that the start of the first part-name
 | |
| ("(") will also be the last byte the mtd-id split algorithm is using for
 | |
| its colon search.
 | |
| 
 | |
| Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.985641-1-sven@narfation.org/
 | |
| Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons")
 | |
| Signed-off-by: Sven Eckelmann <sven@narfation.org>
 | |
| 
 | |
| --- a/drivers/mtd/parsers/cmdlinepart.c
 | |
| +++ b/drivers/mtd/parsers/cmdlinepart.c
 | |
| @@ -218,7 +218,7 @@ static int mtdpart_setup_real(char *s)
 | |
|  		struct cmdline_mtd_partition *this_mtd;
 | |
|  		struct mtd_partition *parts;
 | |
|  		int mtd_id_len, num_parts;
 | |
| -		char *p, *mtd_id, *semicol;
 | |
| +		char *p, *mtd_id, *semicol, *open_parenth;
 | |
|  
 | |
|  		/*
 | |
|  		 * Replace the first ';' by a NULL char so strrchr can work
 | |
| @@ -228,6 +228,13 @@ static int mtdpart_setup_real(char *s)
 | |
|  		if (semicol)
 | |
|  			*semicol = '\0';
 | |
|  
 | |
| +		/* make sure that part-names with ":" will not be handled as
 | |
| +		 * part of the mtd-id with an ":"
 | |
| +		 */
 | |
| +		open_parenth = strchr(s, '(');
 | |
| +		if (open_parenth)
 | |
| +			*open_parenth = '\0';
 | |
| +
 | |
|  		mtd_id = s;
 | |
|  
 | |
|  		/*
 | |
| @@ -237,6 +244,10 @@ static int mtdpart_setup_real(char *s)
 | |
|  		 */
 | |
|  		p = strrchr(s, ':');
 | |
|  
 | |
| +		/* Restore the '(' now. */
 | |
| +		if (open_parenth)
 | |
| +			*open_parenth = '(';
 | |
| +
 | |
|  		/* Restore the ';' now. */
 | |
|  		if (semicol)
 | |
|  			*semicol = ';';
 |