mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			29 lines
		
	
	
		
			698 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			698 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/drivers/mtd/mtdpart.c
 | 
						|
+++ b/drivers/mtd/mtdpart.c
 | 
						|
@@ -793,8 +793,11 @@ static void split_uimage(struct mtd_info
 | 
						|
 {
 | 
						|
 	struct {
 | 
						|
 		__be32 magic;
 | 
						|
-		__be32 pad[2];
 | 
						|
+		__be32 pad0[2];
 | 
						|
 		__be32 size;
 | 
						|
+		__be32 pad1[4];
 | 
						|
+		__be32 name[7];
 | 
						|
+		__be32 kern_size;
 | 
						|
 	} hdr;
 | 
						|
 	size_t len;
 | 
						|
 
 | 
						|
@@ -804,7 +807,11 @@ static void split_uimage(struct mtd_info
 | 
						|
 	if (len != sizeof(hdr) || hdr.magic != cpu_to_be32(UBOOT_MAGIC))
 | 
						|
 		return;
 | 
						|
 
 | 
						|
-	len = be32_to_cpu(hdr.size) + 0x40;
 | 
						|
+	if (hdr.kern_size != 0 && hdr.name[0] == 0)
 | 
						|
+		len = be32_to_cpu(hdr.kern_size);
 | 
						|
+	else
 | 
						|
+		len = be32_to_cpu(hdr.size) + 0x40;
 | 
						|
+
 | 
						|
 	__mtd_add_partition(master, "rootfs", part->offset + len,
 | 
						|
 			    part->mtd.size - len, false);
 | 
						|
 }
 |