diff options
author | Hauke Mehrtens <hauke@openwrt.org> | 2012-10-25 19:49:20 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@openwrt.org> | 2012-10-25 19:49:20 +0000 |
commit | 4d69d9733e24b3210eed0db7f41d407d3e3103ed (patch) | |
tree | 9b3cc3cc27996ae5c60c1a3714c36934f9d31a31 /target/linux/brcm47xx | |
parent | 151cd2e5377e7aec50a40b93f71dc6f5b5b37de9 (diff) | |
download | upstream-4d69d9733e24b3210eed0db7f41d407d3e3103ed.tar.gz upstream-4d69d9733e24b3210eed0db7f41d407d3e3103ed.tar.bz2 upstream-4d69d9733e24b3210eed0db7f41d407d3e3103ed.zip |
brcm47xx: check for .ELF header in partition parser
The image format for the wgt634u is different from the normal format.
Without this patch the partition parser detects a 128kb bigger
partition after every update.
This closes #11420
Thank you b.sander for the patch.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33935 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm47xx')
-rw-r--r-- | target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch b/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch index 5381e2f6cc..0c66603f2e 100644 --- a/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch +++ b/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch @@ -26,7 +26,7 @@ obj-$(CONFIG_MTD_CHAR) += mtdchar.o --- /dev/null +++ b/drivers/mtd/bcm47xxpart.c -@@ -0,0 +1,542 @@ +@@ -0,0 +1,548 @@ +/* + * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org> + * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org> @@ -96,6 +96,11 @@ + u32 offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */ +}; + ++/* for WGT634U search the ELF-header of ++ * the kernel decompressor instead of TRX ++ */ ++#define WGT634U_ELF_MAGIC 0x464c457f /* ".ELF" */ ++ +/* for Edimax Print servers which use an additional header + * then the firmware on flash looks like : + * EDIMAX HEADER | TRX HEADER @@ -149,7 +154,8 @@ + } + + /* found a TRX header */ -+ if (le32_to_cpu(trx->magic) == TRX_MAGIC) ++ if (le32_to_cpu(trx->magic) == TRX_MAGIC || ++ le32_to_cpu(trx->magic) == WGT634U_ELF_MAGIC) + goto found; + } + |