diff options
| author | Al Viro <viro@ZenIV.linux.org.uk> | 2016-01-14 13:13:49 -0500 |
|---|---|---|
| committer | Michal Marek <mmarek@suse.com> | 2016-02-01 09:12:40 -0500 |
| commit | 6b87b70c5339f30e3c5b32085e69625906513dc2 (patch) | |
| tree | f545cfb4ce45da55cb323ed8ca2c97c5b6bf1504 /scripts/kconfig | |
| parent | 42f9d3c6888bceef6dc7ba72c77acf47347dcf05 (diff) | |
unbreak allmodconfig KCONFIG_ALLCONFIG=...
Prior to 3.13 make allmodconfig KCONFIG_ALLCONFIG=/dev/null used
to be equivalent to make allmodconfig; these days it hardwires MODULES to n.
In fact, any KCONFIG_ALLCONFIG that doesn't set MODULES explicitly is
treated as if it set it to n.
Regression had been introduced by commit cfa98f ("kconfig: do not
override symbols already set"); what happens is that conf_read_simple()
does sym_calc_value(modules_sym) on exit, which leaves SYMBOL_VALID set and
has conf_set_all_new_symbols() skip modules_sym.
It's pretty easy to fix - simply move that call of sym_calc_value()
into the callers, except for the ones in KCONFIG_ALLCONFIG handling.
Objections?
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Fixes: cfa98f2e0ae9 ("kconfig: do not override symbols already set")
Signed-off-by: Michal Marek <mmarek@suse.com>
Diffstat (limited to 'scripts/kconfig')
| -rw-r--r-- | scripts/kconfig/confdata.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 0b7dc2fd7bac..dd243d2abd87 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
| @@ -267,10 +267,8 @@ int conf_read_simple(const char *name, int def) | |||
| 267 | if (in) | 267 | if (in) |
| 268 | goto load; | 268 | goto load; |
| 269 | sym_add_change_count(1); | 269 | sym_add_change_count(1); |
| 270 | if (!sym_defconfig_list) { | 270 | if (!sym_defconfig_list) |
| 271 | sym_calc_value(modules_sym); | ||
| 272 | return 1; | 271 | return 1; |
| 273 | } | ||
| 274 | 272 | ||
| 275 | for_all_defaults(sym_defconfig_list, prop) { | 273 | for_all_defaults(sym_defconfig_list, prop) { |
| 276 | if (expr_calc_value(prop->visible.expr) == no || | 274 | if (expr_calc_value(prop->visible.expr) == no || |
| @@ -403,7 +401,6 @@ setsym: | |||
| 403 | } | 401 | } |
| 404 | free(line); | 402 | free(line); |
| 405 | fclose(in); | 403 | fclose(in); |
| 406 | sym_calc_value(modules_sym); | ||
| 407 | return 0; | 404 | return 0; |
| 408 | } | 405 | } |
| 409 | 406 | ||
| @@ -414,8 +411,12 @@ int conf_read(const char *name) | |||
| 414 | 411 | ||
| 415 | sym_set_change_count(0); | 412 | sym_set_change_count(0); |
| 416 | 413 | ||
| 417 | if (conf_read_simple(name, S_DEF_USER)) | 414 | if (conf_read_simple(name, S_DEF_USER)) { |
| 415 | sym_calc_value(modules_sym); | ||
| 418 | return 1; | 416 | return 1; |
| 417 | } | ||
| 418 | |||
| 419 | sym_calc_value(modules_sym); | ||
| 419 | 420 | ||
| 420 | for_all_symbols(i, sym) { | 421 | for_all_symbols(i, sym) { |
| 421 | sym_calc_value(sym); | 422 | sym_calc_value(sym); |
| @@ -846,6 +847,7 @@ static int conf_split_config(void) | |||
| 846 | 847 | ||
| 847 | name = conf_get_autoconfig_name(); | 848 | name = conf_get_autoconfig_name(); |
| 848 | conf_read_simple(name, S_DEF_AUTO); | 849 | conf_read_simple(name, S_DEF_AUTO); |
| 850 | sym_calc_value(modules_sym); | ||
| 849 | 851 | ||
| 850 | if (chdir("include/config")) | 852 | if (chdir("include/config")) |
| 851 | return 1; | 853 | return 1; |
