diff options
Diffstat (limited to 'scripts/kconfig/symbol.c')
-rw-r--r-- | scripts/kconfig/symbol.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 78a60ba39e54..ee225ced2ce4 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
@@ -31,6 +31,7 @@ struct symbol symbol_yes = { | |||
31 | }; | 31 | }; |
32 | 32 | ||
33 | int sym_change_count; | 33 | int sym_change_count; |
34 | struct symbol *sym_defconfig_list; | ||
34 | struct symbol *modules_sym; | 35 | struct symbol *modules_sym; |
35 | tristate modules_val; | 36 | tristate modules_val; |
36 | 37 | ||
@@ -352,10 +353,13 @@ void sym_calc_value(struct symbol *sym) | |||
352 | sym->curr.val = sym_calc_choice(sym); | 353 | sym->curr.val = sym_calc_choice(sym); |
353 | sym_validate_range(sym); | 354 | sym_validate_range(sym); |
354 | 355 | ||
355 | if (memcmp(&oldval, &sym->curr, sizeof(oldval))) | 356 | if (memcmp(&oldval, &sym->curr, sizeof(oldval))) { |
356 | sym_set_changed(sym); | 357 | sym_set_changed(sym); |
357 | if (modules_sym == sym) | 358 | if (modules_sym == sym) { |
358 | modules_val = modules_sym->curr.tri; | 359 | sym_set_all_changed(); |
360 | modules_val = modules_sym->curr.tri; | ||
361 | } | ||
362 | } | ||
359 | 363 | ||
360 | if (sym_is_choice(sym)) { | 364 | if (sym_is_choice(sym)) { |
361 | int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE); | 365 | int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE); |
@@ -449,11 +453,8 @@ bool sym_set_tristate_value(struct symbol *sym, tristate val) | |||
449 | } | 453 | } |
450 | 454 | ||
451 | sym->def[S_DEF_USER].tri = val; | 455 | sym->def[S_DEF_USER].tri = val; |
452 | if (oldval != val) { | 456 | if (oldval != val) |
453 | sym_clear_all_valid(); | 457 | sym_clear_all_valid(); |
454 | if (sym == modules_sym) | ||
455 | sym_set_all_changed(); | ||
456 | } | ||
457 | 458 | ||
458 | return true; | 459 | return true; |
459 | } | 460 | } |