Skip to content

Commit 0c5b6c2

Browse files
m-v-bmasahir0y
authored andcommitted
kconfig: Clear "written" flag to avoid data loss
Prior to this commit, starting nconfig, xconfig or gconfig, and saving the .config file more than once caused data loss, where a .config file that contained only comments would be written to disk starting from the second save operation. This bug manifests itself because the SYMBOL_WRITTEN flag is never cleared after the first call to conf_write, and subsequent calls to conf_write then skip all of the configuration symbols due to the SYMBOL_WRITTEN flag being set. This commit resolves this issue by clearing the SYMBOL_WRITTEN flag from all symbols before conf_write returns. Fixes: 8e2442a ("kconfig: fix missing choice values in auto.conf") Cc: linux-stable <stable@vger.kernel.org> # 4.19+ Signed-off-by: M. Vefa Bicakci <m.v.b@runbox.com> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
1 parent e8de12f commit 0c5b6c2

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

scripts/kconfig/confdata.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,7 @@ int conf_write(const char *name)
848848
const char *str;
849849
char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
850850
char *env;
851+
int i;
851852
bool need_newline = false;
852853

853854
if (!name)
@@ -930,6 +931,9 @@ int conf_write(const char *name)
930931
}
931932
fclose(out);
932933

934+
for_all_symbols(i, sym)
935+
sym->flags &= ~SYMBOL_WRITTEN;
936+
933937
if (*tmpname) {
934938
if (is_same(name, tmpname)) {
935939
conf_message("No change to %s", name);

0 commit comments

Comments
 (0)