lkml.org 
[lkml]   [2020]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[GRUB PATCH RFC 11/18] efi: Add a function to read EFI variables with attributes
    Date
    It will be used to properly detect and report UEFI Secure Boot status to
    the x86 Linux kernel. The functionality will be added by subsequent patches.

    Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
    Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
    ---
    grub-core/kern/efi/efi.c | 16 +++++++++++++---
    include/grub/efi/efi.h | 5 +++++
    2 files changed, 18 insertions(+), 3 deletions(-)

    diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
    index 81bc49f84..7eeac6019 100644
    --- a/grub-core/kern/efi/efi.c
    +++ b/grub-core/kern/efi/efi.c
    @@ -223,8 +223,11 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,
    }

    grub_efi_status_t
    -grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
    - grub_size_t *datasize_out, void **data_out)
    +grub_efi_get_variable_with_attributes (const char *var,
    + const grub_efi_guid_t *guid,
    + grub_size_t *datasize_out,
    + void **data_out,
    + grub_efi_uint32_t *attributes)
    {
    grub_efi_status_t status;
    grub_efi_uintn_t datasize = 0;
    @@ -261,7 +264,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
    return GRUB_EFI_OUT_OF_RESOURCES;
    }

    - status = efi_call_5 (r->get_variable, var16, guid, NULL, &datasize, data);
    + status = efi_call_5 (r->get_variable, var16, guid, attributes, &datasize, data);
    grub_free (var16);

    if (status == GRUB_EFI_SUCCESS)
    @@ -275,6 +278,13 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
    return status;
    }

    +grub_efi_status_t
    +grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
    + grub_size_t *datasize_out, void **data_out)
    +{
    + return grub_efi_get_variable_with_attributes (var, guid, datasize_out, data_out, NULL);
    +}
    +
    #pragma GCC diagnostic ignored "-Wcast-align"

    /* Search the mods section from the PE32/PE32+ image. This code uses
    diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
    index 8b2a0f1f5..83d958f99 100644
    --- a/include/grub/efi/efi.h
    +++ b/include/grub/efi/efi.h
    @@ -74,6 +74,11 @@ grub_err_t EXPORT_FUNC (grub_efi_set_virtual_address_map) (grub_efi_uintn_t memo
    grub_efi_uintn_t descriptor_size,
    grub_efi_uint32_t descriptor_version,
    grub_efi_memory_descriptor_t *virtual_map);
    +grub_efi_status_t EXPORT_FUNC (grub_efi_get_variable_with_attributes) (const char *variable,
    + const grub_efi_guid_t *guid,
    + grub_size_t *datasize_out,
    + void **data_out,
    + grub_efi_uint32_t *attributes);
    grub_efi_status_t EXPORT_FUNC (grub_efi_get_variable) (const char *variable,
    const grub_efi_guid_t *guid,
    grub_size_t *datasize_out,
    --
    2.11.0
    \
     
     \ /
      Last update: 2020-05-05 01:23    [W:3.692 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site