aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/patches-3.10/0135-mtd-add-rtn56u-support.patch
blob: 52379916b91057e7b350a20f4e8525e04da82303 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
--- a/drivers/mtd/mtdpart.c	2014-04-27 10:09:21.566294160 +0300
+++ b/drivers/mtd/mtdpart.c	2014-06-09 11:27:48.952211672 +0300
@@ -793,8 +793,11 @@
 {
 	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 @@
 	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);
 }