linux/scripts/kconfig
Kees Cook 0902b3cb23 kconfig: Avoid prompting for transitional symbols
The "transitional" symbol keyword, while working with the "olddefconfig"
target, was prompting during "oldconfig". This occurred because these
symbols were not being marked as user-defined when they received values
from transitional symbols that had user values. The "olddefconfig" target
explicitly doesn't prompt for anything, so this deficiency wasn't noticed.

The issue manifested when a symbol's value came from a transitional
symbol's user value but the receiving symbol wasn't marked with
SYMBOL_DEF_USER. Thus the "oldconfig" logic would then prompt for these
symbols unnecessarily.

Check after value calculation whether a symbol without a user value
gets its value from a single transitional symbol that does have a user
value. In such cases, mark the receiving symbol as user-defined to
prevent prompting.

Update regression tests to verify that symbols with transitional defaults
are not prompted in "oldconfig", except when conditional defaults evaluate
to 'no' and should legitimately be prompted.

Build tested with "make testconfig".

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Closes: https://lore.kernel.org/lkml/CAHk-=wgZjUk4Cy2XgNkTrQoO8XCmNUHrTe5D519Fij1POK+3qw@mail.gmail.com/
Fixes: f9afce4f32 ("kconfig: Add transitional symbol attribute for migration support")
Cc: Vegard Nossum <vegard.nossum@oracle.com>
Link: https://lore.kernel.org/r/20250930154514.it.623-kees@kernel.org
Signed-off-by: Kees Cook <kees@kernel.org>
2025-10-07 08:21:23 -07:00
..
lxdialog kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c 2025-08-06 10:23:36 +09:00
tests kconfig: Avoid prompting for transitional symbols 2025-10-07 08:21:23 -07:00
.gitignore kconfig: Update all declared targets 2023-01-13 16:29:52 +09:00
Makefile kbuild: suppress stdout from merge_config for silent builds 2025-01-10 23:01:21 +09:00
conf.c kconfig: rename menu_get_parent_menu() to menu_get_menu_or_parent_menu() 2025-06-30 12:52:58 +09:00
confdata.c kconfig: use memcmp instead of deprecated bcmp 2025-06-18 10:11:15 +09:00
expr.c kconfig: clear expr::val_is_valid when allocated 2024-10-01 17:05:30 +09:00
expr.h kconfig: Add transitional symbol attribute for migration support 2025-09-24 14:23:35 -07:00
gconf-cfg.sh kconfig: gconf: migrate to GTK 3 2025-07-26 15:31:29 +09:00
gconf.c kconfig: gconf: refactor text_insert_help() 2025-07-26 19:55:37 +09:00
gconf.ui kconfig: gconf: replace GtkImageMenuItem with GtkMenuItem 2025-07-26 19:55:37 +09:00
images.c
images.h
internal.h kconfig: cache expression values 2024-09-20 09:21:53 +09:00
lexer.l kconfig: Add transitional symbol attribute for migration support 2025-09-24 14:23:35 -07:00
lkc.h kconfig: add a function to dump all menu entries in a tree-like format 2025-07-26 15:31:30 +09:00
lkc_proto.h kconfig: add sym_get_prompt_menu() helper function 2024-11-06 08:46:34 +09:00
mconf-cfg.sh kconfig: add -e and -u options to *conf-cfg.sh scripts 2024-07-16 01:08:36 +09:00
mconf.c kbuild: split x*alloc() functions in kconfig to scripts/include/xalloc.h 2024-09-01 20:34:48 +09:00
menu.c kconfig: add a function to dump all menu entries in a tree-like format 2025-07-26 15:31:30 +09:00
merge_config.sh kconfig: merge_config: use an empty file as initfile 2025-04-06 06:22:01 +09:00
mnconf-common.c kbuild: move some helper headers from scripts/kconfig/ to scripts/include/ 2024-07-21 23:10:43 +09:00
mnconf-common.h kbuild: move some helper headers from scripts/kconfig/ to scripts/include/ 2024-07-21 23:10:43 +09:00
nconf-cfg.sh kconfig: add -e and -u options to *conf-cfg.sh scripts 2024-07-16 01:08:36 +09:00
nconf.c kconfig: nconf: Ensure null termination where strncpy is used 2025-07-26 15:31:17 +09:00
nconf.gui.c kconfig: nconf: Format and print 'line' without a temporary copy 2025-08-18 10:46:19 -07:00
nconf.h kconfig: nconf: Add search jump feature 2023-08-13 21:29:41 +09:00
parser.y kconfig: Add transitional symbol attribute for migration support 2025-09-24 14:23:35 -07:00
preprocess.c kbuild: split x*alloc() functions in kconfig to scripts/include/xalloc.h 2024-09-01 20:34:48 +09:00
preprocess.h kconfig: split preprocessor prototypes into preprocess.h 2024-02-19 18:20:40 +09:00
qconf-cfg.sh kconfig: add -e and -u options to *conf-cfg.sh scripts 2024-07-16 01:08:36 +09:00
qconf.cc kconfig: qconf/xconfig: show the OptionsMode radio button setting at startup 2025-08-18 10:48:15 -07:00
qconf.h kconfig: qconf: confine {begin,end}Group to constructor and destructor 2025-07-26 15:31:30 +09:00
streamline_config.pl streamline_config.pl: remove prompt warnings for configs with defaults 2024-11-06 08:46:34 +09:00
symbol.c kconfig: Avoid prompting for transitional symbols 2025-10-07 08:21:23 -07:00
util.c scripts: move hash function from scripts/kconfig/ to scripts/include/ 2024-09-20 09:21:52 +09:00