[PATCH] kconfig: Warn on dead select or imply for choice values
From: Nicolas Schier
Date: Tue Aug 04 2026 - 08:46:48 EST
Update the internal kconfig check to print a warning on 'select' and
'imply' statements that target on choice values.
Julian Braha reported that kconfig's 'select' and 'imply' do not work
for choice values but have no effect all. Show a warning instead of
error-out to allow kconfig to check the whole kconfig rule set.
Reported-by: Julian Braha <julianbraha@xxxxxxxxx>
Closes: https://lore.kernel.org/linux-kbuild/20260715220149.48700-1-julianbraha@xxxxxxxxx/ # [1]
Suggested-by: Kees Cook <kees@xxxxxxxxxx>
Suggested-by: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
Signed-off-by: Nicolas Schier <nsc@xxxxxxxxxx>
---
Depends on related fixes in Kconfig files:
https://lore.kernel.org/r/20260729203845.387239-1-julianbraha@xxxxxxxxx # change-requested
https://lore.kernel.org/r/20260801160140.2391000-1-julianbraha@xxxxxxxxx # under-review
https://lore.kernel.org/r/20260714112047.2304856-1-julianbraha@xxxxxxxxx # under-review
https://lore.kernel.org/r/20260723104933.117413-1-julianbraha@xxxxxxxxx # applied to mips-next
https://lore.kernel.org/r/20260723122818.437802-1-julianbraha@xxxxxxxxx # applied
---
scripts/kconfig/menu.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index b2d8d4e11e07..fc8d8cfe034d 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -287,6 +287,10 @@ static void sym_check_prop(struct symbol *sym)
"'%s' has wrong type. '%s' only "
"accept arguments of bool and "
"tristate type", sym2->name, use);
+ if (sym_is_choice_value(sym2))
+ prop_warn(prop,
+ "config symbol '%s' uses %s for '%s', but '%s' is a choice value",
+ sym->name, use, sym2->name, sym2->name);
break;
case P_RANGE:
if (sym->type != S_INT && sym->type != S_HEX)
---
base-commit: 6946cd5d0aa4dd10a414ddcb7a10844fdb0ad345
change-id: 20260802-kconfig-warn-on-dead-select-for-choice-value-bd71a1de1a96
prerequisite-message-id: <20260729203845.387239-1-julianbraha@xxxxxxxxx>
prerequisite-patch-id: 3bb796da65f588d1df5003dac5af7a9d7420f266
prerequisite-message-id: <20260801160140.2391000-1-julianbraha@xxxxxxxxx>
prerequisite-patch-id: 5277c28b2d25752fb7e5827ed744b0cf0c619574
prerequisite-message-id: <20260714112047.2304856-1-julianbraha@xxxxxxxxx>
prerequisite-patch-id: bef2d24caba30e7dc2ac5189c10b6473485a1e3c
prerequisite-message-id: <20260723104933.117413-1-julianbraha@xxxxxxxxx>
prerequisite-patch-id: da49e2868fbb19afc3195cbd2868739a94aa02c3
prerequisite-message-id: <20260723122818.437802-1-julianbraha@xxxxxxxxx>
prerequisite-patch-id: 3c894964a57e4e30515fcb14226dae725555c25e
Best regards,
--
Nicolas