summaryrefslogtreecommitdiffstats
path: root/src/interface/linux/linux_smbios.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/linux/linux_smbios.c')
-rw-r--r--src/interface/linux/linux_smbios.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/interface/linux/linux_smbios.c b/src/interface/linux/linux_smbios.c
index 981873943..1450fcf1b 100644
--- a/src/interface/linux/linux_smbios.c
+++ b/src/interface/linux/linux_smbios.c
@@ -19,6 +19,7 @@
FILE_LICENCE ( GPL2_OR_LATER );
+#include <string.h>
#include <errno.h>
#include <ipxe/linux_api.h>
#include <ipxe/linux_sysfs.h>
@@ -35,7 +36,7 @@ static const char smbios_entry_filename[] =
static const char smbios_filename[] = "/sys/firmware/dmi/tables/DMI";
/** Cache SMBIOS data */
-static userptr_t smbios_data;
+static void *smbios_data;
/**
* Find SMBIOS
@@ -46,7 +47,7 @@ static userptr_t smbios_data;
static int linux_find_smbios ( struct smbios *smbios ) {
struct smbios3_entry *smbios3_entry;
struct smbios_entry *smbios_entry;
- userptr_t entry;
+ void *entry;
void *data;
int len;
int rc;
@@ -59,7 +60,7 @@ static int linux_find_smbios ( struct smbios *smbios ) {
smbios_entry_filename, strerror ( rc ) );
goto err_entry;
}
- data = user_to_virt ( entry, 0 );
+ data = entry;
smbios3_entry = data;
smbios_entry = data;
if ( ( len >= ( ( int ) sizeof ( *smbios3_entry ) ) ) &&
@@ -98,6 +99,7 @@ static int linux_find_smbios ( struct smbios *smbios ) {
return 0;
ufree ( smbios_data );
+ smbios_data = NULL;
err_read:
err_version:
ufree ( entry );
@@ -116,6 +118,7 @@ static void linux_smbios_shutdown ( int booting __unused ) {
/* Free SMBIOS data */
ufree ( smbios_data );
+ smbios_data = NULL;
}
/** SMBIOS shutdown function */