efi_loader: Pass address to fs_read()

The fs_read() function wants to get an address rather than the
pointer to a buffer.

So let's convert the passed buffer from pointer back a the address
to make efi_loader on sandbox happier.

Signed-off-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
lime2-spi
Alexander Graf 6 years ago
parent 9dff490089
commit d5a5a5a747
  1. 5
      lib/efi_loader/efi_file.c

@ -9,6 +9,7 @@
#include <charset.h>
#include <efi_loader.h>
#include <malloc.h>
#include <mapmem.h>
#include <fs.h>
/* GUID for file system information */
@ -232,8 +233,10 @@ static efi_status_t file_read(struct file_handle *fh, u64 *buffer_size,
void *buffer)
{
loff_t actread;
/* fs_read expects buffer address, not pointer */
uintptr_t buffer_addr = (uintptr_t)map_to_sysmem(buffer);
if (fs_read(fh->path, (ulong)buffer, fh->offset,
if (fs_read(fh->path, buffer_addr, fh->offset,
*buffer_size, &actread))
return EFI_DEVICE_ERROR;

Loading…
Cancel
Save