[PATCH] kconfig: Warn on dead select or imply for choice values

Nicolas Schier <[email protected]> Tue, 04 Aug 2026 14:45:32 +0200
Newsgroups gmane.linux.kbuild.devel,gmane.linux.kernel
Message-ID <20260804-kconfig-warn-on-dead-select-for-choice-value-v1-1-e5c9a274d291@kernel.org>
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 <[email protected]>
Closes: https://lore.kernel.org/linux-kbuild/[email protected]/ # [1]
Suggested-by: Kees Cook <[email protected]>
Suggested-by: Jani Nikula <[email protected]>
Signed-off-by: Nicolas Schier <[email protected]>
---
Depends on related fixes in Kconfig files:
https://lore.kernel.org/r/[email protected] # change-requested
https://lore.kernel.org/r/[email protected] # under-review
https://lore.kernel.org/r/[email protected] # under-review
https://lore.kernel.org/r/[email protected] # applied to mips-next
https://lore.kernel.org/r/[email protected] # 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: <[email protected]>
prerequisite-patch-id: 3bb796da65f588d1df5003dac5af7a9d7420f266
prerequisite-message-id: <[email protected]>
prerequisite-patch-id: 5277c28b2d25752fb7e5827ed744b0cf0c619574
prerequisite-message-id: <[email protected]>
prerequisite-patch-id: bef2d24caba30e7dc2ac5189c10b6473485a1e3c
prerequisite-message-id: <[email protected]>
prerequisite-patch-id: da49e2868fbb19afc3195cbd2868739a94aa02c3
prerequisite-message-id: <[email protected]>
prerequisite-patch-id: 3c894964a57e4e30515fcb14226dae725555c25e

Best regards,
--  
Nicolas