Skip to content

Commit

Permalink
kconfig: Clear "written" flag to avoid data loss
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
m-v-b authored and masahir0y committed Aug 4, 2019
1 parent e8de12f commit 0c5b6c2
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions scripts/kconfig/confdata.c
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,7 @@ int conf_write(const char *name)
const char *str;
char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
char *env;
int i;
bool need_newline = false;

if (!name)
Expand Down Expand Up @@ -930,6 +931,9 @@ int conf_write(const char *name)
}
fclose(out);

for_all_symbols(i, sym)
sym->flags &= ~SYMBOL_WRITTEN;

if (*tmpname) {
if (is_same(name, tmpname)) {
conf_message("No change to %s", name);
Expand Down

0 comments on commit 0c5b6c2

Please sign in to comment.