]> git.itanic.dy.fi Git - linux-stable/commitdiff
kconfig: initialize sym->curr.tri to 'no' for all symbol types again
authorMasahiro Yamada <masahiroy@kernel.org>
Fri, 26 Jan 2024 13:30:10 +0000 (22:30 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 31 Jan 2024 14:59:42 +0000 (23:59 +0900)
Geert Uytterhoeven reported that commit 4e244c10eab3 ("kconfig: remove
unneeded symbol_empty variable") changed the default value of
CONFIG_LOG_CPU_MAX_BUF_SHIFT from 12 to 0.

As it turned out, this is an undefined behavior because sym_calc_value()
stopped setting the sym->curr.tri field for 'int', 'hex', and 'string'
symbols.

This commit restores the original behavior, where 'int', 'hex', 'string'
symbols are interpreted as false if used in boolean contexts.

CONFIG_LOG_CPU_MAX_BUF_SHIFT will default to 12 again, irrespective
of CONFIG_BASE_SMALL. Presumably, this is not the intended behavior,
as already reported [1], but this is another issue that should be
addressed by a separate patch.

[1]: https://lore.kernel.org/all/f6856be8-54b7-0fa0-1d17-39632bf29ada@oracle.com/

Fixes: 4e244c10eab3 ("kconfig: remove unneeded symbol_empty variable")
Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
Closes: https://lore.kernel.org/all/CAMuHMdWm6u1wX7efZQf=2XUAHascps76YQac6rdnQGhc8nop_Q@mail.gmail.com/
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/symbol.c

index 3e808528aaeab2625424b56247eed97fa107232d..e9e9fb8d86746460c893a51a2989ca4061fc8e52 100644 (file)
@@ -345,6 +345,8 @@ void sym_calc_value(struct symbol *sym)
 
        oldval = sym->curr;
 
+       newval.tri = no;
+
        switch (sym->type) {
        case S_INT:
                newval.val = "0";
@@ -357,7 +359,7 @@ void sym_calc_value(struct symbol *sym)
                break;
        case S_BOOLEAN:
        case S_TRISTATE:
-               newval = symbol_no.curr;
+               newval.val = "n";
                break;
        default:
                sym->curr.val = sym->name;