Masami Hiramatsu
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Masami Hiramatsu
f91cb5b747
tools/bootconfig: Fix to return 0 if succeeded to show the bootconfig
...
Fix bootconfig to return 0 if succeeded to show the bootconfig
in initrd. Without this fix, "bootconfig INITRD" command
returns !0 even if the command succeeded to show the bootconfig.
Link: http://lkml.kernel.org/r/159230246566.65555.11891772258543514487.stgit@devnote2
Cc: stable@vger.kernel.org
Fixes: 950313ebf7 ("tools: bootconfig: Add bootconfig command")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-06-16 21:21:03 -04:00
Masami Hiramatsu
272da3279d
tools/bootconfig: Fix to use correct quotes for value
...
Fix bootconfig tool to select double or single quotes
correctly according to the value.
If a bootconfig value includes a double quote character,
we must use single-quotes to quote that value.
Link: http://lkml.kernel.org/r/159230245697.65555.12444299015852932304.stgit@devnote2
Cc: stable@vger.kernel.org
Fixes: 950313ebf7 ("tools: bootconfig: Add bootconfig command")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-06-16 21:21:03 -04:00
Steven Rostedt (VMware)
9d82ccda2b
tools/bootconfig: Fix apply_xbc() to return zero on success
...
The return of apply_xbc() returns the result of the last write() call, which
is not what is expected. It should only return zero on success.
Link: https://lore.kernel.org/r/20200508093059.GF9365@kadam
Fixes: 8842604446 ("tools/bootconfig: Fix resource leak in apply_xbc()")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com >
Acked-by: Masami Hiramatsu <mhiramat@kernel.org >
Tested-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-05-11 17:00:26 -04:00
Yunfeng Ye
8842604446
tools/bootconfig: Fix resource leak in apply_xbc()
...
Fix the @data and @fd allocations that are leaked in the error path of
apply_xbc().
Link: http://lkml.kernel.org/r/583a49c9-c27a-931d-e6c2-6f63a4b18bea@huawei.com
Acked-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-05-07 14:18:27 -04:00
Masami Hiramatsu
89b74cac78
tools/bootconfig: Show line and column in parse error
...
Show line and column when we got a parse error in bootconfig tool.
Current lib/bootconfig shows the parse error with byte offset, but
that is not human readable.
This makes xbc_init() not showing error message itself but able to
pass the error message and position to caller, so that the caller
can decode it and show the error message with line number and columns.
With this patch, bootconfig tool shows an error with line:column as
below.
$ cat samples/bad-dotword.bconf
# do not start keyword with .
key {
.word = 1
}
$ ./bootconfig -a samples/bad-dotword.bconf initrd
Parse Error: Invalid keyword at 3:3
Link: http://lkml.kernel.org/r/158323469002.10560.4023923847704522760.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-03-03 17:38:42 -05:00
Masami Hiramatsu
15e95037b4
tools/bootconfig: Remove unneeded error message silencer
...
Remove error message silent knob, we don't need it anymore
because we can check if there is a bootconfig by checking
the magic word.
If there is a magic word, but failed to load a bootconfig
from initrd, there is a real problem.
Link: http://lkml.kernel.org/r/158220113256.26565.14264598654427773104.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org >
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org >
2020-02-20 17:53:41 -05:00