]> git.baikalelectronics.ru Git - kernel.git/commit
lib/bootconfig: Fix a bug of breaking existing tree nodes
authorMasami Hiramatsu <mhiramat@kernel.org>
Mon, 21 Sep 2020 09:44:42 +0000 (18:44 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 22 Sep 2020 01:45:52 +0000 (21:45 -0400)
commit8197fd75ccda1944145009b98f9c78757a8df79a
tree9878b733c7abc961463076db9845f745b01d8833
parentbc9c8491dbd70cfb5d327014a40345739aef768c
lib/bootconfig: Fix a bug of breaking existing tree nodes

Fix a bug of breaking existing tree nodes by parsing the second
and subsequent braces. Since the bootconfig parser uses the
node.next field as a flag of current parent node, but this will
break the existing tree if the same key node is specified again
in the bootconfig.

For example, the following bootconfig should be foo.buz and bar.

foo
bar
foo { buz }

However, when parsing the brace "{", it breaks foo->bar link
by marking open-brace node. So the bootconfig unlinks bar
from the bootconfig internal tree.

This introduces a stack outside of the tree and record the
last open-brace on the stack instead of using node.next field.

Link: https://lkml.kernel.org/r/160068148267.1088739.8264704338030168660.stgit@devnote2
Fixes: 002e0be7fc1b ("bootconfig: Add Extra Boot Config support")
Cc: Ingo Molnar <mingo@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
lib/bootconfig.c