From ccbea572631693f82ed2f86571d4fb9624ac7a86 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Sat, 21 Sep 2013 17:55:44 +0000 Subject: kernel/3.10: move squashfs check from rootfs split code into a separate file Signed-off-by: Gabor Juhos git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38109 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../403-mtd-hook-mtdsplit-to-Kbuild.patch | 25 ++++++++ ...use-mtd_get_squashfs_len-in-split_squasfh.patch | 69 ++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 target/linux/generic/patches-3.10/403-mtd-hook-mtdsplit-to-Kbuild.patch create mode 100644 target/linux/generic/patches-3.10/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch (limited to 'target/linux/generic/patches-3.10') diff --git a/target/linux/generic/patches-3.10/403-mtd-hook-mtdsplit-to-Kbuild.patch b/target/linux/generic/patches-3.10/403-mtd-hook-mtdsplit-to-Kbuild.patch new file mode 100644 index 0000000000..c24f34c5cc --- /dev/null +++ b/target/linux/generic/patches-3.10/403-mtd-hook-mtdsplit-to-Kbuild.patch @@ -0,0 +1,25 @@ +--- a/drivers/mtd/Kconfig ++++ b/drivers/mtd/Kconfig +@@ -36,6 +36,11 @@ config MTD_UIMAGE_SPLIT + depends on MTD_SPLIT_FIRMWARE + default y + ++config MTD_SPLIT ++ def_bool n ++ help ++ Generic MTD split support. ++ + endmenu + + config MTD_TESTS +--- a/drivers/mtd/Makefile ++++ b/drivers/mtd/Makefile +@@ -6,6 +6,8 @@ + obj-$(CONFIG_MTD) += mtd.o + mtd-y := mtdcore.o mtdsuper.o mtdconcat.o mtdpart.o mtdchar.o + ++mtd-$(CONFIG_MTD_SPLIT) += mtdsplit.o ++ + obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o + obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o + obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o diff --git a/target/linux/generic/patches-3.10/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch b/target/linux/generic/patches-3.10/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch new file mode 100644 index 0000000000..43960b3065 --- /dev/null +++ b/target/linux/generic/patches-3.10/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch @@ -0,0 +1,69 @@ +--- a/drivers/mtd/mtdpart.c ++++ b/drivers/mtd/mtdpart.c +@@ -34,6 +34,7 @@ + #include + + #include "mtdcore.h" ++#include "mtdsplit.h" + + /* Our partition linked list */ + static LIST_HEAD(mtd_partitions); +@@ -669,43 +670,16 @@ mtd_pad_erasesize(struct mtd_info *mtd, + return len; + } + +-#define ROOTFS_SPLIT_NAME "rootfs_data" +- +-struct squashfs_super_block { +- __le32 s_magic; +- __le32 pad0[9]; +- __le64 bytes_used; +-}; +- +- + static int split_squashfs(struct mtd_info *master, int offset, int *split_offset) + { +- struct squashfs_super_block sb; ++ size_t squashfs_len; + int len, ret; + +- ret = mtd_read(master, offset, sizeof(sb), &len, (void *) &sb); +- if (ret || (len != sizeof(sb))) { +- printk(KERN_ALERT "split_squashfs: error occured while reading " +- "from \"%s\"\n", master->name); +- return -EINVAL; +- } +- +- if (SQUASHFS_MAGIC != le32_to_cpu(sb.s_magic) ) { +- printk(KERN_ALERT "split_squashfs: no squashfs found in \"%s\"\n", +- master->name); +- *split_offset = 0; +- return 0; +- } +- +- if (le64_to_cpu((sb.bytes_used)) <= 0) { +- printk(KERN_ALERT "split_squashfs: squashfs is empty in \"%s\"\n", +- master->name); +- *split_offset = 0; +- return 0; +- } ++ ret = mtd_get_squashfs_len(master, offset, &squashfs_len); ++ if (ret) ++ return ret; + +- len = (u32) le64_to_cpu(sb.bytes_used); +- len = mtd_pad_erasesize(master, offset, len); ++ len = mtd_pad_erasesize(master, offset, squashfs_len); + *split_offset = offset + len; + + return 0; +--- a/drivers/mtd/Kconfig ++++ b/drivers/mtd/Kconfig +@@ -20,6 +20,7 @@ config MTD_ROOTFS_ROOT_DEV + + config MTD_ROOTFS_SPLIT + bool "Automatically split 'rootfs' partition for squashfs" ++ select MTD_SPLIT + default y + + config MTD_SPLIT_FIRMWARE -- cgit v1.2.3