[PATCH] kconfig: save the KCONFIG_SEED value in the config file

From: Randy Dunlap
Date: Fri Feb 17 2023 - 01:52:52 EST


Save (print) the randconfig seed value in the kernel .config file.
This enables someone to see easily that the .config file is a
randconfig file.

It also allows the randconfig file to be recreated by using the
KCONFIG_SEED environment variable, as long as KCONFIG_PROBABILITY
was not specified (the default probability values were used) and
as long as the file was not edited.

Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Cc: Masahiro Yamada <masahiroy@xxxxxxxxxx>
Cc: linux-kbuild@xxxxxxxxxxxxxxx
---
scripts/kconfig/conf.c | 3 +++
scripts/kconfig/confdata.c | 2 ++
scripts/kconfig/lkc.h | 2 ++
3 files changed, 7 insertions(+)

diff -- a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -83,6 +83,8 @@ static void xfgets(char *str, int size,
printf("%s", str);
}

+unsigned int rand_seed;
+
static void set_randconfig_seed(void)
{
unsigned int seed;
@@ -109,6 +111,7 @@ static void set_randconfig_seed(void)
seed = (now.tv_sec + 1) * (now.tv_usec + 1);
}

+ rand_seed = seed;
printf("KCONFIG_SEED=0x%X\n", seed);
srand(seed);
}
diff -- a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -621,6 +621,8 @@ static void conf_write_heading(FILE *fp,
cs->decoration);

fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text);
+ if (rand_seed)
+ fprintf(fp, "%s KCONFIG_SEED=0x%X\n", cs->decoration, rand_seed);

fprintf(fp, "%s\n", cs->postfix);
}
diff -- a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -43,6 +43,8 @@ const char *zconf_curname(void);
const char *conf_get_configname(void);
void set_all_choice_values(struct symbol *csym);

+extern unsigned int rand_seed;
+
/* confdata.c and expr.c */
static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out)
{