[PATCH] dmicheck: check the config files exist for CONFIG_STRICT_DEVMEM setting
Ivan Hu
ivan.hu at canonical.com
Fri Jan 17 06:44:15 UTC 2025
BugLink: https://bugs.launchpad.net/fwts/+bug/2094994
If config files do not exist, cannot determine whether CONFIG_STRICT_DEVMEM
was set or not, skip the test and add warnings.
Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
src/dmi/dmicheck/dmicheck.c | 6 ++++--
src/lib/include/fwts_kernel.h | 1 +
src/lib/src/fwts_kernel.c | 21 +++++++++++++++++++++
3 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
index 702021f9..34a639c6 100644
--- a/src/dmi/dmicheck/dmicheck.c
+++ b/src/dmi/dmicheck/dmicheck.c
@@ -422,7 +422,8 @@ static void* dmi_table_smbios(fwts_framework *fw, fwts_smbios_entry *entry)
}
#ifdef FWTS_ARCH_AARCH64
- if (fwts_kernel_config_set("CONFIG_STRICT_DEVMEM")) {
+ if (!fwts_kernel_config_exist() ||
+ fwts_kernel_config_set("CONFIG_STRICT_DEVMEM")) {
fwts_warning(fw, "Skipping scanning SMBIOS table in memory for arm64 systems");
return NULL;
}
@@ -477,7 +478,8 @@ static void* dmi_table_smbios30(fwts_framework *fw, fwts_smbios30_entry *entry)
}
#ifdef FWTS_ARCH_AARCH64
- if (fwts_kernel_config_set("CONFIG_STRICT_DEVMEM")) {
+ if (!fwts_kernel_config_exist() ||
+ fwts_kernel_config_set("CONFIG_STRICT_DEVMEM")) {
fwts_warning(fw, "Skipping scanning SMBIOS3 table in memory for arm64 systems");
return NULL;
}
diff --git a/src/lib/include/fwts_kernel.h b/src/lib/include/fwts_kernel.h
index 82963322..85c7825b 100644
--- a/src/lib/include/fwts_kernel.h
+++ b/src/lib/include/fwts_kernel.h
@@ -21,5 +21,6 @@
#define __FWTS_KERNEL_H__
bool fwts_kernel_config_set(const char *config);
+bool fwts_kernel_config_exist(void);
#endif
diff --git a/src/lib/src/fwts_kernel.c b/src/lib/src/fwts_kernel.c
index c3e04e05..0cc02d19 100644
--- a/src/lib/src/fwts_kernel.c
+++ b/src/lib/src/fwts_kernel.c
@@ -124,3 +124,24 @@ bool fwts_kernel_config_set(const char *config)
return false;
}
+
+/*
+ * fwts_kernel_config_exist
+ * check whether kernel config exist
+ */
+bool fwts_kernel_config_exist()
+{
+ char config_file[PATH_MAX];
+ size_t config_file_len;
+ struct utsname buf;
+
+ uname(&buf);
+ config_file_len = strlen(CONFIG_FILE_PREFIX) + strlen(buf.release) + 1;
+ (void)strlcpy(config_file, CONFIG_FILE_PREFIX, config_file_len);
+ (void)strlcat(config_file, buf.release, config_file_len);
+
+ if ((access(config_file, F_OK) != 0) && (access(CONFIG_FILE_PROC, F_OK) != 0))
+ return false;
+
+ return true;
+}
--
2.34.1
More information about the fwts-devel
mailing list