summaryrefslogtreecommitdiff
path: root/lib/efi_loader/efi_memory.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2023-04-03 16:45:41 -0400
committerTom Rini <trini@konsulko.com>2023-04-03 16:45:41 -0400
commit288fe30a2367b8d0e3f416493150a38ebaa88459 (patch)
tree1f841eb95d9ceeda4aa3255fb1132a0342f9b19a /lib/efi_loader/efi_memory.c
parentfd4ed6b7e83ec3aea9a2ce21baea8ca9676f40dd (diff)
parent9876c8c147144db2c120fcc9ffa6de27f6894441 (diff)
Merge branch 'next'
Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'lib/efi_loader/efi_memory.c')
-rw-r--r--lib/efi_loader/efi_memory.c46
1 files changed, 25 insertions, 21 deletions
diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c
index b7bee98f79c..8f82496740f 100644
--- a/lib/efi_loader/efi_memory.c
+++ b/lib/efi_loader/efi_memory.c
@@ -5,9 +5,12 @@
* Copyright (c) 2016 Alexander Graf
*/
+#define LOG_CATEGORY LOGC_EFI
+
#include <common.h>
#include <efi_loader.h>
#include <init.h>
+#include <log.h>
#include <malloc.h>
#include <mapmem.h>
#include <watchdog.h>
@@ -534,27 +537,6 @@ efi_status_t efi_allocate_pages(enum efi_allocate_type type,
}
/**
- * efi_alloc() - allocate memory pages
- *
- * @len: size of the memory to be allocated
- * @memory_type: usage type of the allocated memory
- * Return: pointer to the allocated memory area or NULL
- */
-void *efi_alloc(uint64_t len, int memory_type)
-{
- uint64_t ret = 0;
- uint64_t pages = efi_size_in_pages(len);
- efi_status_t r;
-
- r = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES, memory_type, pages,
- &ret);
- if (r == EFI_SUCCESS)
- return (void*)(uintptr_t)ret;
-
- return NULL;
-}
-
-/**
* efi_free_pages() - free memory pages
*
* @memory: start of the memory area to be freed
@@ -673,6 +655,28 @@ efi_status_t efi_allocate_pool(enum efi_memory_type pool_type, efi_uintn_t size,
}
/**
+ * efi_alloc() - allocate boot services data pool memory
+ *
+ * Allocate memory from pool and zero it out.
+ *
+ * @size: number of bytes to allocate
+ * Return: pointer to allocated memory or NULL
+ */
+void *efi_alloc(size_t size)
+{
+ void *buf;
+
+ if (efi_allocate_pool(EFI_BOOT_SERVICES_DATA, size, &buf) !=
+ EFI_SUCCESS) {
+ log_err("out of memory");
+ return NULL;
+ }
+ memset(buf, 0, size);
+
+ return buf;
+}
+
+/**
* efi_free_pool() - free memory from pool
*
* @buffer: start of memory to be freed