mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-20 22:01:38 +00:00
76d079204d
Changelogs: * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.12 * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.13 * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.14 Build tested on brcm63xx and ipq806x, runtested on brcm63xx. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 45711
28 lines
744 B
Diff
28 lines
744 B
Diff
--- a/drivers/mtd/mtdpart.c
|
|
+++ b/drivers/mtd/mtdpart.c
|
|
@@ -806,8 +806,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;
|
|
|
|
@@ -817,7 +820,10 @@ 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;
|
|
|
|
if (config_enabled(CONFIG_MTD_SPLIT_UIMAGE_FW))
|
|
pr_err("Dedicated partitioner didn't split firmware partition, please fill a bug report!\n");
|