kernel: mtdsplit_minor: accept bootimage filename

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>
This commit is contained in:
John Thomson 2024-10-16 12:51:22 +10:00 committed by Robert Marko
parent ade045084b
commit 36834ea340

View File

@ -34,7 +34,9 @@
#define YAFFS_OBJECT_TYPE_FILE 0x1 #define YAFFS_OBJECT_TYPE_FILE 0x1
#define YAFFS_OBJECTID_ROOT 0x1 #define YAFFS_OBJECTID_ROOT 0x1
#define YAFFS_SUM_UNUSED 0xFFFF #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 #define MINOR_NR_PARTS 2
@ -46,7 +48,7 @@ struct minor_header {
int yaffs_type; int yaffs_type;
int yaffs_obj_id; int yaffs_obj_id;
u16 yaffs_sum_unused; 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, static int mtdsplit_parse_minor(struct mtd_info *master,
@ -87,7 +89,8 @@ static int mtdsplit_parse_minor(struct mtd_info *master,
return 0; 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"); pr_info("MiNOR YAFFS first name not matched\n");
return 0; return 0;
} }