Files
linux/lib
Breno Leitao 7afe198fc1 bootconfig: render descendant keys when xbc_snprint_cmdline() root has a value
xbc_node_for_each_key_value() walks to the first leaf under @root, and
when @root is itself a leaf it yields @root. That happens not only for
an empty "kernel {}" subtree, but also when @root carries both a value
and subkeys, e.g.

	kernel = x
	kernel.foo = bar

Here @root ("kernel") is a leaf because its first child is the value
node "x", so the iterator returns @root first. Feeding @root back into
xbc_node_compose_key_after(root, root) returns -EINVAL, which the only
in-kernel caller papers over with a "len <= 0" check -- but the
follow-up tools/bootconfig -C user propagates the error and turns such
a bootconfig into a build failure. Worse, short-circuiting the whole
call on a leaf @root would silently drop the valid "kernel.foo = bar"
descendant that this patch should render.

Skip @root inside the loop instead of bailing out: the value-only entry
is dropped (it is rendered through the "kernel" cmdline path, not here),
while real descendant keys are still emitted. An entirely empty subtree
now renders nothing and returns 0 rather than -EINVAL, matching the
"nothing to render is not an error" semantics expected by the new
build-time caller.

Link: https://lore.kernel.org/all/20260626-bootconfig_using_tools-v7-2-24ab72139c29@debian.org/

Signed-off-by: Breno Leitao <leitao@debian.org>
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
2026-07-02 21:15:44 +09:00
..
2025-03-16 22:30:49 -07:00
2025-04-11 17:32:37 -07:00
2026-03-05 22:16:08 -05:00
2021-08-19 09:02:55 +09:00
2023-02-02 22:50:01 -08:00
2023-02-02 22:50:01 -08:00
2021-01-03 20:05:18 -05:00
2021-08-19 09:02:55 +09:00
2024-10-14 16:33:24 -05:00
2026-01-11 06:09:11 -10:00
2026-02-27 16:40:16 +01:00
2021-07-08 11:48:20 -07:00
2021-06-18 11:43:09 +02:00
2026-03-24 13:39:53 -04:00
2025-03-25 10:18:31 -03:00
2026-04-18 00:10:48 -07:00
2024-12-09 13:48:29 -08:00
2025-09-13 16:54:46 -07:00