kernel: mtdsplit_minor: accept bootimage filename
authorJohn Thomson <git@johnthomson.fastmail.com.au>
Wed, 16 Oct 2024 02:51:22 +0000 (12:51 +1000)
committerRobert Marko <robimarko@gmail.com>
Wed, 30 Oct 2024 10:15:34 +0000 (11:15 +0100)
RouterBOOT v7 on NOR devices no longer accepts the YAFFS kernel ELF
method of booting. It will accept an NPK image named bootimage.
Adjust mtdsplit_minor to accept this second possible boot file name.
Use the conservative value of 127 for YAFFS max name length (used when
YAFFS compiled with unicode support) vs 255.

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
Acked-by: Thibaut VARENE <hacks@slashdirt.org>
Link: https://github.com/openwrt/openwrt/pull/16780
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c

index be69de57987e9de1caa4aa5bddf39c9bb130fbb5..053cba6272da64cc6e2c70b03fe5923757d54040 100644 (file)
@@ -34,7 +34,9 @@
 #define YAFFS_OBJECT_TYPE_FILE 0x1
 #define YAFFS_OBJECTID_ROOT    0x1
 #define YAFFS_SUM_UNUSED       0xFFFF
-#define YAFFS_NAME             "kernel"
+#define YAFFS_MAX_NAME_LENGTH  127
+#define YAFFS_NAME_KERNEL      "kernel"
+#define YAFFS_NAME_BOOTIMAGE   "bootimage"
 
 #define MINOR_NR_PARTS         2
 
@@ -46,7 +48,7 @@ struct minor_header {
        int yaffs_type;
        int yaffs_obj_id;
        u16 yaffs_sum_unused;
-       char yaffs_name[sizeof(YAFFS_NAME)];
+       char yaffs_name[YAFFS_MAX_NAME_LENGTH];
 };
 
 static int mtdsplit_parse_minor(struct mtd_info *master,
@@ -87,7 +89,8 @@ static int mtdsplit_parse_minor(struct mtd_info *master,
                return 0;
        }
 
-       if (memcmp(hdr.yaffs_name, YAFFS_NAME, sizeof(YAFFS_NAME))) {
+       if ((memcmp(hdr.yaffs_name, YAFFS_NAME_KERNEL, sizeof(YAFFS_NAME_KERNEL))) &&
+           (memcmp(hdr.yaffs_name, YAFFS_NAME_BOOTIMAGE, sizeof(YAFFS_NAME_BOOTIMAGE)))) {
                pr_info("MiNOR YAFFS first name not matched\n");
                return 0;
        }