[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