Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

kconfig: do not clear SYMBOL_DEF_USER when the value is out of range

When a user-supplied value is out of range, (NEW) and an incorrect default
value are shown.

[Test Kconfig]

config FOO
int "foo"
range 10 20

[Test .config]

CONFIG_FOO=30

[Result without this fix]

$ make config
*
* Main menu
*
foo (FOO) [10] (NEW)

[Result with this fix]

$ make config
*
* Main menu
*
foo (FOO) [20]

Currently, the SYMBOL_DEF_USER is cleared if the user input does not
reside within the range. Kconfig forgets the initial value 30, and
prints (NEW) and an incorrect default [10].

Kconfig should remember the user's input. The default should be [20]
because the user's input, 30, is closer to the upper limit of the range.

Please note it will not show up in "make oldconfig" because it is no
longer considered as a new symbol. It also fixes the inconsistent
behavior in listnewconfig/helpnewconfig.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

+1 -1
+1 -1
scripts/kconfig/confdata.c
··· 594 594 /* Reset a string value if it's out of range */ 595 595 if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) 596 596 break; 597 - sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); 597 + sym->flags &= ~SYMBOL_VALID; 598 598 conf_unsaved++; 599 599 break; 600 600 default: