@@ -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;
}
@@ -21,5 +21,6 @@
#define __FWTS_KERNEL_H__
bool fwts_kernel_config_set(const char *config);
+bool fwts_kernel_config_exist(void);
#endif
@@ -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;
+}
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@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(-)