]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tools/bootconfig: Cleanup bootconfig footer size calculations
authorMasami Hiramatsu (Google) <mhiramat@kernel.org>
Thu, 10 Jul 2025 02:24:17 +0000 (11:24 +0900)
committerMasami Hiramatsu (Google) <mhiramat@kernel.org>
Mon, 14 Jul 2025 02:56:11 +0000 (11:56 +0900)
There are many same pattern of 8 + BOOTCONFIG_MAGIC_LEN for calculating
the size of bootconfig footer. Use BOOTCONFIG_FOOTER_SIZE macro to
clean up those magic numbers.

Link: https://lore.kernel.org/all/175211425693.2591046.16029516706923643510.stgit@mhiramat.tok.corp.google.com/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
tools/bootconfig/main.c

index 8a48cc2536f566307a3d869c9ad9fe4c6e47fb88..4988e23a1422a4414fee99aa7978778dcc74f4f0 100644 (file)
 
 #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 int xbc_show_value(struct xbc_node *node, bool semicolon)
 {
        const char *val, *eol;
@@ -185,7 +189,7 @@ static int load_xbc_from_initrd(int fd, char **buf)
        if (ret < 0)
                return -errno;
 
-       if (stat.st_size < 8 + BOOTCONFIG_MAGIC_LEN)
+       if (stat.st_size < BOOTCONFIG_FOOTER_SIZE)
                return 0;
 
        if (lseek(fd, -BOOTCONFIG_MAGIC_LEN, SEEK_END) < 0)
@@ -198,7 +202,7 @@ static int load_xbc_from_initrd(int fd, char **buf)
        if (memcmp(magic, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN) != 0)
                return 0;
 
-       if (lseek(fd, -(8 + BOOTCONFIG_MAGIC_LEN), SEEK_END) < 0)
+       if (lseek(fd, -BOOTCONFIG_FOOTER_SIZE, SEEK_END) < 0)
                return pr_errno("Failed to lseek for size", -errno);
 
        if (read(fd, &size, sizeof(uint32_t)) < 0)
@@ -210,12 +214,12 @@ static int load_xbc_from_initrd(int fd, char **buf)
        csum = le32toh(csum);
 
        /* Wrong size error  */
-       if (stat.st_size < size + 8 + BOOTCONFIG_MAGIC_LEN) {
+       if (stat.st_size < size + BOOTCONFIG_FOOTER_SIZE) {
                pr_err("bootconfig size is too big\n");
                return -E2BIG;
        }
 
-       if (lseek(fd, stat.st_size - (size + 8 + BOOTCONFIG_MAGIC_LEN),
+       if (lseek(fd, stat.st_size - (size + BOOTCONFIG_FOOTER_SIZE),
                  SEEK_SET) < 0)
                return pr_errno("Failed to lseek", -errno);
 
@@ -346,7 +350,7 @@ static int delete_xbc(const char *path)
                ret = fstat(fd, &stat);
                if (!ret)
                        ret = ftruncate(fd, stat.st_size
-                                       - size - 8 - BOOTCONFIG_MAGIC_LEN);
+                                       - size - BOOTCONFIG_FOOTER_SIZE);
                if (ret)
                        ret = -errno;
        } /* Ignore if there is no boot config in initrd */
@@ -376,8 +380,7 @@ static int apply_xbc(const char *path, const char *xbc_path)
        csum = xbc_calc_checksum(buf, size);
 
        /* Backup the bootconfig data */
-       data = calloc(size + BOOTCONFIG_ALIGN +
-                     sizeof(uint32_t) + sizeof(uint32_t) + BOOTCONFIG_MAGIC_LEN, 1);
+       data = calloc(size + BOOTCONFIG_ALIGN + BOOTCONFIG_FOOTER_SIZE, 1);
        if (!data)
                return -ENOMEM;
        memcpy(data, buf, size);
@@ -425,7 +428,7 @@ static int apply_xbc(const char *path, const char *xbc_path)
        }
 
        /* To align up the total size to BOOTCONFIG_ALIGN, get padding size */
-       total_size = stat.st_size + size + sizeof(uint32_t) * 2 + BOOTCONFIG_MAGIC_LEN;
+       total_size = stat.st_size + size + BOOTCONFIG_FOOTER_SIZE;
        pad = ((total_size + BOOTCONFIG_ALIGN - 1) & (~BOOTCONFIG_ALIGN_MASK)) - total_size;
        size += pad;