On Fri, 11 Sep 2026 23:12:56 +0900 "Masami Hiramatsu (Google)" 
<[email protected]> wrote:

> Hi,
> 
> Here are v2 patches for bootconfig to rejects unexpected config data after
> null character and other cleanups including tools/bootconfig to consolidate
> bootconfig initialization with errors, and skipping internal tree sanity
> check in kernel.
> 
> ...
>

Thanks, I've updateed mm.git's mm-nonmm-unstable branch to this version,

> This version removes redundant buffer copy in init_xbc_with_error() [2/4]
> and moves BOOTCONFIG_FOOTER_SIZE to include/linux/bootconfig.h[4/4].

Here's how v2 altered mm.git:


 include/linux/bootconfig.h |    4 ++++
 init/main.c                |    2 +-
 tools/bootconfig/main.c    |   14 +-------------
 3 files changed, 6 insertions(+), 14 deletions(-)

--- a/include/linux/bootconfig.h~b
+++ a/include/linux/bootconfig.h
@@ -27,6 +27,10 @@ bool __init cmdline_has_extra_options(vo
 #define BOOTCONFIG_ALIGN       (1 << BOOTCONFIG_ALIGN_SHIFT)
 #define BOOTCONFIG_ALIGN_MASK  (BOOTCONFIG_ALIGN - 1)
 
+/* Bootconfig footer is [size][csum][BOOTCONFIG_MAGIC]. */
+#define BOOTCONFIG_FOOTER_SIZE \
+       (sizeof(uint32_t) * 2 + BOOTCONFIG_MAGIC_LEN)
+
 /**
  * xbc_calc_checksum() - Calculate checksum of bootconfig
  * @data: Bootconfig data.
--- a/init/main.c~b
+++ a/init/main.c
@@ -278,7 +278,7 @@ static void * __init get_boot_config_fro
        int i;
 
        if (!initrd_end || initrd_end < initrd_start ||
-           initrd_end - initrd_start < BOOTCONFIG_MAGIC_LEN + 8)
+           initrd_end - initrd_start < BOOTCONFIG_FOOTER_SIZE)
                return NULL;
 
        data = (char *)initrd_end - BOOTCONFIG_MAGIC_LEN;
--- a/tools/bootconfig/main.c~b
+++ a/tools/bootconfig/main.c
@@ -17,10 +17,6 @@
 
 #define pr_err(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__)
 
-/* Bootconfig footer is [size][csum][BOOTCONFIG_MAGIC]. */
-#define BOOTCONFIG_FOOTER_SIZE \
-       (sizeof(uint32_t) * 2 + BOOTCONFIG_MAGIC_LEN)
-
 static void show_xbc_error(const char *data, const char *msg, int pos)
 {
        int lin = 1, col, i;
@@ -44,20 +40,12 @@ static void show_xbc_error(const char *d
 
 static int init_xbc_with_error(char *buf, int len)
 {
-       char *copy = malloc(len);
        const char *msg;
        int ret, pos;
 
-       if (!copy)
-               return -ENOMEM;
-
-       memcpy(copy, buf, len);
-       /* We do not terminate the copy with \0 for sanity checking */
-
        ret = xbc_init(buf, len, &msg, &pos);
        if (ret < 0)
-               show_xbc_error(copy, msg, pos);
-       free(copy);
+               show_xbc_error(buf, msg, pos);
 
        return ret;
 }
_


Reply via email to