瀏覽代碼

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 <[email protected]>
Acked-by: Thibaut VARENE <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/16780
Signed-off-by: Robert Marko <[email protected]>
John Thomson 1 年之前
父節點
當前提交
36834ea340
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6 3
      target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c

+ 6 - 3
target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c

@@ -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;
 	}