]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blobdiff - tools/bootconfig/main.c
Merge tag 'kgdb-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt...
[mirror_ubuntu-kernels.git] / tools / bootconfig / main.c
index fd67496a947f3c785fee93a89f9e6931ac83896f..156b62a163c5a6e48edb876ac74166feae2516b8 100644 (file)
 #include <errno.h>
 #include <endian.h>
 
-#include <linux/kernel.h>
 #include <linux/bootconfig.h>
 
+#define pr_err(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__)
+
 static int xbc_show_value(struct xbc_node *node, bool semicolon)
 {
        const char *val, *eol;
@@ -176,7 +177,7 @@ static int load_xbc_from_initrd(int fd, char **buf)
 {
        struct stat stat;
        int ret;
-       u32 size = 0, csum = 0, rcsum;
+       uint32_t size = 0, csum = 0, rcsum;
        char magic[BOOTCONFIG_MAGIC_LEN];
        const char *msg;
 
@@ -200,11 +201,11 @@ static int load_xbc_from_initrd(int fd, char **buf)
        if (lseek(fd, -(8 + BOOTCONFIG_MAGIC_LEN), SEEK_END) < 0)
                return pr_errno("Failed to lseek for size", -errno);
 
-       if (read(fd, &size, sizeof(u32)) < 0)
+       if (read(fd, &size, sizeof(uint32_t)) < 0)
                return pr_errno("Failed to read size", -errno);
        size = le32toh(size);
 
-       if (read(fd, &csum, sizeof(u32)) < 0)
+       if (read(fd, &csum, sizeof(uint32_t)) < 0)
                return pr_errno("Failed to read checksum", -errno);
        csum = le32toh(csum);
 
@@ -229,7 +230,7 @@ static int load_xbc_from_initrd(int fd, char **buf)
                return -EINVAL;
        }
 
-       ret = xbc_init(*buf, &msg, NULL);
+       ret = xbc_init(*buf, size, &msg, NULL);
        /* Wrong data */
        if (ret < 0) {
                pr_err("parse error: %s.\n", msg);
@@ -269,7 +270,7 @@ static int init_xbc_with_error(char *buf, int len)
        if (!copy)
                return -ENOMEM;
 
-       ret = xbc_init(buf, &msg, &pos);
+       ret = xbc_init(buf, len, &msg, &pos);
        if (ret < 0)
                show_xbc_error(copy, msg, pos);
        free(copy);
@@ -362,7 +363,7 @@ static int apply_xbc(const char *path, const char *xbc_path)
        size_t total_size;
        struct stat stat;
        const char *msg;
-       u32 size, csum;
+       uint32_t size, csum;
        int pos, pad;
        int ret, fd;
 
@@ -376,13 +377,13 @@ static int apply_xbc(const char *path, const char *xbc_path)
 
        /* Backup the bootconfig data */
        data = calloc(size + BOOTCONFIG_ALIGN +
-                     sizeof(u32) + sizeof(u32) + BOOTCONFIG_MAGIC_LEN, 1);
+                     sizeof(uint32_t) + sizeof(uint32_t) + BOOTCONFIG_MAGIC_LEN, 1);
        if (!data)
                return -ENOMEM;
        memcpy(data, buf, size);
 
        /* Check the data format */
-       ret = xbc_init(buf, &msg, &pos);
+       ret = xbc_init(buf, size, &msg, &pos);
        if (ret < 0) {
                show_xbc_error(data, msg, pos);
                free(data);
@@ -391,12 +392,13 @@ static int apply_xbc(const char *path, const char *xbc_path)
                return ret;
        }
        printf("Apply %s to %s\n", xbc_path, path);
+       xbc_get_info(&ret, NULL);
        printf("\tNumber of nodes: %d\n", ret);
        printf("\tSize: %u bytes\n", (unsigned int)size);
        printf("\tChecksum: %d\n", (unsigned int)csum);
 
        /* TODO: Check the options by schema */
-       xbc_destroy_all();
+       xbc_exit();
        free(buf);
 
        /* Remove old boot config if exists */
@@ -423,17 +425,17 @@ 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(u32) * 2 + BOOTCONFIG_MAGIC_LEN;
+       total_size = stat.st_size + size + sizeof(uint32_t) * 2 + BOOTCONFIG_MAGIC_LEN;
        pad = ((total_size + BOOTCONFIG_ALIGN - 1) & (~BOOTCONFIG_ALIGN_MASK)) - total_size;
        size += pad;
 
        /* Add a footer */
        p = data + size;
-       *(u32 *)p = htole32(size);
-       p += sizeof(u32);
+       *(uint32_t *)p = htole32(size);
+       p += sizeof(uint32_t);
 
-       *(u32 *)p = htole32(csum);
-       p += sizeof(u32);
+       *(uint32_t *)p = htole32(csum);
+       p += sizeof(uint32_t);
 
        memcpy(p, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN);
        p += BOOTCONFIG_MAGIC_LEN;