Hongtao Lee and Masami Hiramatsu (Google)
f42d01aadc
tools/bootconfig: Fix buf leaks in apply_xbc
...
If data calloc failed, free the buf before return.
Link: https://lore.kernel.org/all/20260520030126.147782-1-lihongtao@kylinos.cn/
Fixes: 950313ebf7 ("tools: bootconfig: Add bootconfig command")
Signed-off-by: Hongtao Lee <lihongtao@kylinos.cn >
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org >
2026-05-21 11:42:27 +09:00
Josh Law and Masami Hiramatsu (Google)
3b2c2ab4ce
tools/bootconfig: fix fd leak in load_xbc_file() on fstat failure
...
If fstat() fails after open() succeeds, the function returns without
closing the file descriptor. Also preserve errno across close(), since
close() may overwrite it before the error is returned.
Link: https://lore.kernel.org/all/20260318155847.78065-3-objecting@objecting.org/
Fixes: 950313ebf7 ("tools: bootconfig: Add bootconfig command")
Signed-off-by: Josh Law <objecting@objecting.org >
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org >
2026-03-19 08:43:06 +09:00
Ben Hutchings and Masami Hiramatsu (Google)
729dc340a4
bootconfig: Fix negative seeks on 32-bit with LFS enabled
...
Commit 26dda57695 "tools/bootconfig: Cleanup bootconfig footer size
calculations" replaced some expressions of type int with the
BOOTCONFIG_FOOTER_SIZE macro, which expands to an expression of type
size_t, which is unsigned.
On 32-bit architectures with LFS enabled (i.e. off_t is 64-bit), the
seek offset of -BOOTCONFIG_FOOTER_SIZE now turns into a positive
value.
Fix this by casting the size to off_t before negating it.
Just in case someone changes BOOTCONFIG_MAGIC_LEN to have type size_t
later, do the same thing to the seek offset of -BOOTCONFIG_MAGIC_LEN.
Link: https://lore.kernel.org/all/aKHlevxeg6Y7UQrz@decadent.org.uk/
Fixes: 26dda57695 ("tools/bootconfig: Cleanup bootconfig footer size calculations")
Signed-off-by: Ben Hutchings <benh@debian.org >
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org >
2025-08-21 08:16:31 +09:00
Ben Hutchings and Masami Hiramatsu (Google)
6ed5e20466
bootconfig: Fix unaligned access when building footer
...
Currently we add padding between the bootconfig text and footer to
ensure that the footer is aligned within the initramfs image.
However, because only the bootconfig data is held in memory, not the
full initramfs image, the footer may not be naturally aligned in
memory.
This can result in an alignment fault (SIGBUS) when writing the footer
on some architectures, such as sparc.
Build the footer in a struct on the stack before adding it to the
buffer.
References: https://buildd.debian.org/status/fetch.php?pkg=linux&arch=sparc64&ver=6.16%7Erc7-1%7Eexp1&stamp=1753209801&raw=0
Link: https://lore.kernel.org/all/aIC-NTw-cdm9ZGFw@decadent.org.uk/
Signed-off-by: Ben Hutchings <benh@debian.org >
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org >
2025-07-24 22:16:48 +09:00
Masami Hiramatsu (Google)
26dda57695
tools/bootconfig: Cleanup bootconfig footer size calculations
...
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 >
2025-07-14 11:56:11 +09:00
Luo Yifan and Masami Hiramatsu (Google)
f6ab7384d5
tools/bootconfig: Fix the wrong format specifier
...
Use '%u' instead of '%d' for unsigned int.
Link: https://lore.kernel.org/all/20241105011048.201629-1-luoyifan@cmss.chinamobile.com/
Fixes: 9737800111 ("tools/bootconfig: Suppress non-error messages")
Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com >
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org >
2025-01-28 23:27:01 +09:00
Masami Hiramatsu and Steven Rostedt (VMware)
4ee1b4cac2
bootconfig: Cleanup dummy headers in tools/bootconfig
...
Cleanup dummy headers in tools/bootconfig/include except
for tools/bootconfig/include/linux/bootconfig.h.
For this change, I use __KERNEL__ macro to split kernel
header #include and introduce xbc_alloc_mem() and
xbc_free_mem().
Link: https://lkml.kernel.org/r/163187299574.2366983.18371329724128746091.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-10-10 22:16:02 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
4f292c4886
bootconfig: Replace u16 and u32 with uint16_t and uint32_t
...
Replace u16 and u32 with uint16_t and uint32_t so
that the tools/bootconfig only needs <stdint.h>.
Link: https://lkml.kernel.org/r/163187298835.2366983.9838262576854319669.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-10-10 20:44:05 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
160321b260
tools/bootconfig: Print all error message in stderr
...
Print all error message in stderr. This also removes
unneeded tools/bootconfig/include/linux/printk.h.
Link: https://lkml.kernel.org/r/163187298106.2366983.15210300267326257397.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-10-10 20:44:05 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
115d4d08ae
bootconfig: Rename xbc_destroy_all() to xbc_exit()
...
Avoid using this noisy name and use more calm one.
This is just a name change. No functional change.
Link: https://lkml.kernel.org/r/163187295918.2366983.5231840238429996027.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-10-10 20:44:05 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
e306220cb7
bootconfig: Add xbc_get_info() for the node information
...
Add xbc_get_info() API which allows user to get the
number of used xbc_nodes and the size of bootconfig
data. This is also useful for checking the bootconfig
is initialized or not.
Link: https://lkml.kernel.org/r/163177340877.682366.4360676589783197627.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-10-10 20:43:53 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
bdac5c2b24
bootconfig: Allocate xbc_data inside xbc_init()
...
Allocate 'xbc_data' in the xbc_init() so that it does
not need to care about the ownership of the copied
data.
Link: https://lkml.kernel.org/r/163177339986.682366.898762699429769117.stgit@devnote2
Suggested-by: Steven Rostedt <rostedt@goodmis.org >
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-10-10 20:43:42 -04:00
Julio Faracco and Steven Rostedt (VMware)
903bd067fa
bootconfig: Fix missing return check of xbc_node_compose_key function
...
The function `xbc_show_list should` handle the keys during the
composition. Even the errors returned by the compose function. Instead
of removing the `ret` variable, it should save the value and show the
exact error. This missing variable is causing a compilation issue also.
Link: https://lkml.kernel.org/r/163077087861.222577.12884543474750968146.stgit@devnote2
Fixes: e5efaeb8a8 ("bootconfig: Support mixing a value and subkeys under a key")
Signed-off-by: Julio Faracco <jcfaracco@gmail.com >
Acked-by: Masami Hiramatsu <mhiramat@kernel.org >
Cc: stable@vger.kernel.org
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-09-08 15:28:50 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
99f4f5d623
bootconfig: Share the checksum function with tools
...
Move the checksum calculation function into the header for sharing it
with tools/bootconfig.
Link: https://lkml.kernel.org/r/162262197470.264090.16325743685807878807.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-06-10 13:41:26 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
e5efaeb8a8
bootconfig: Support mixing a value and subkeys under a key
...
Support mixing a value and subkeys under a key. Since kernel cmdline
options will support "aaa.bbb=value1 aaa.bbb.ccc=value2", it is
better that the bootconfig supports such configuration too.
Note that this does not change syntax itself but just accepts
mixed value and subkeys e.g.
key = value1
key.subkey = value2
But this is not accepted;
key {
value1
subkey = value2
}
That will make value1 as a subkey.
Also, the order of the value node under a key is fixed. If there
are a value and subkeys, the value is always the first child node
of the key. Thus if user specifies subkeys first, e.g.
key.subkey = value1
key = value2
In the program (and /proc/bootconfig), it will be shown as below
key = value2
key.subkey = value1
Link: https://lkml.kernel.org/r/162262194685.264090.7738574774030567419.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-06-10 13:41:26 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
ca24306d83
bootconfig: Change array value to use child node
...
It is not possible to put an array value with subkeys under
a key node, because both of subkeys and the array elements
are using "next" field of the xbc_node.
Thus this changes the array values to use "child" field in
the array case. The reason why split this change is to
test it easily.
Link: https://lkml.kernel.org/r/162262193838.264090.16044473274501498656.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-06-10 13:38:25 -04:00
zuoqilin and Steven Rostedt (VMware)
30d103f2d4
tools/bootconfig: Simplify expression
...
It is not necessary to define the variable ret to receive
the return value of the xbc_node_compose_key() method.
Link: https://lkml.kernel.org/r/20210414134647.1870-1-zuoqilin1@163.com
Acked-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: zuoqilin <zuoqilin@yulong.com >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-06-10 11:16:20 -04:00
Zhen Lei and Steven Rostedt (VMware)
e8ba0b2b64
tools/bootconfig: Fix error return code in apply_xbc()
...
Fix to return a negative error code from the error handling case instead
of 0, as done elsewhere in this function.
Link: https://lkml.kernel.org/r/20210508034216.2277-1-thunder.leizhen@huawei.com
Fixes: a995e6bc05 ("tools/bootconfig: Fix to check the write failure correctly")
Reported-by: Hulk Robot <hulkci@huawei.com >
Acked-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2021-06-08 16:43:59 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
e86843580d
tools/bootconfig: Store size and checksum in footer as le32
...
Store the size and the checksum fields in the footer as le32
instead of u32. This will allow us to apply bootconfig to the
cross build initrd without caring the endianness.
Link: https://lkml.kernel.org/r/160583935332.547349.5897811300636587426.stgit@devnote2
Reported-by: Steven Rostedt <rostedt@goodmis.org >
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-11-30 23:22:11 -05:00
Masami Hiramatsu and Steven Rostedt (VMware)
e1cef2d4c3
tools/bootconfig: Align the bootconfig applied initrd image size to 4
...
Align the bootconfig applied initrd image size to 4. To fill the gap,
the bootconfig command uses null characters in between the bootconfig
data and the footer. This will expands the footer size but don't change
the checksum.
Thus the block image of the initrd file with bootconfig is as follows.
[initrd][bootconfig][(pad)][size][csum]["#BOOTCONFIG\n"]
Link: https://lkml.kernel.org/r/160576522046.320071.8550680670010950634.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-11-19 08:55:44 -05:00
Masami Hiramatsu and Steven Rostedt (VMware)
a995e6bc05
tools/bootconfig: Fix to check the write failure correctly
...
Fix to check the write(2) failure including partial write
correctly and try to rollback the partial write, because
if there is no BOOTCONFIG_MAGIC string, we can not remove it.
Link: https://lkml.kernel.org/r/160576521135.320071.3883101436675969998.stgit@devnote2
Fixes: 85c46b78da ("bootconfig: Add bootconfig magic word for indicating bootconfig explicitly")
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-11-19 08:55:44 -05:00
Masami Hiramatsu and Steven Rostedt (VMware)
a61ea6379a
tools/bootconfig: Fix errno reference after printf()
...
Fix not to refer the errno variable as the result of previous libc
functions after printf() because printf() can change the errno.
Link: https://lkml.kernel.org/r/160576520243.320071.51093664672431249.stgit@devnote2
Fixes: 85c46b78da ("bootconfig: Add bootconfig magic word for indicating bootconfig explicitly")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-11-19 08:55:44 -05:00
Masami Hiramatsu and Steven Rostedt (VMware)
483ce6708d
tools/bootconfig: Make all functions static
...
Make all functions static except for main(). This is just a cleanup.
Link: https://lkml.kernel.org/r/159704850135.175360.12465608936326167517.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-09-18 22:17:13 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
e4f70b7bad
tools/bootconfig: Add list option
...
Add list option (-l) to show the bootconfig in the list style.
This is same output of /proc/bootconfig. So users can check
how their bootconfig will be shown in procfs. This will help
them to write a user-space script to parse the /proc/bootconfig.
Link: https://lkml.kernel.org/r/159704849087.175360.8761890802048625207.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-09-18 22:17:13 -04:00
Masami Hiramatsu and Steven Rostedt (VMware)
d052e1c690
tools/bootconfig: Show bootconfig compact tree from bootconfig file
...
Show the bootconfig compact tree from the bootconfig file
instead of an initrd if the given file has no magic number
and is smaller than 32KB.
User can use this for checking the syntax error or output
checking before applying the bootconfig to initrd.
Link: https://lkml.kernel.org/r/159704848156.175360.6621139371000789360.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-09-18 22:17:13 -04:00