lkml.org 
[lkml]   [2016]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: [PATCH 2/5] efibc: Fix excessive stack footprint warning
    Date
    Why not.  See patch as attachment.

    Thanks,

    Jérémy

    From 8a9b07e2d7242fa8a36157f1025202a96c3c7c9a Mon Sep 17 00:00:00 2001
    From: Jeremy Compostella <jeremy.compostella@intel.com>
    Date: Tue, 10 May 2016 10:34:21 +0200
    Subject: [PATCH] efibc: report the EFI variable name in the error messages

    Report the name of the EFI variable if the value is incorrect or if
    efibc_set_variable() fails to allocate the struct efivar_entry object.

    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
    ---
    drivers/firmware/efi/efibc.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/firmware/efi/efibc.c b/drivers/firmware/efi/efibc.c
    index cb4f573..93d34a1 100644
    --- a/drivers/firmware/efi/efibc.c
    +++ b/drivers/firmware/efi/efibc.c
    @@ -37,13 +37,14 @@ static int efibc_set_variable(const char *name, const char *value)
    size_t size = (strlen(value) + 1) * sizeof(efi_char16_t);

    if (size > sizeof(entry->var.Data)) {
    - pr_err("value is too large");
    + pr_err("value is too large for %s EFI variable", name);
    return -EINVAL;
    }

    entry = kmalloc(sizeof(*entry), GFP_KERNEL);
    if (!entry) {
    - pr_err("failed to allocate efivar entry");
    + pr_err("failed to allocate efivar entry for %s EFI variable",
    + name);
    return -ENOMEM;
    }

    --
    1.9.1


    "Elliott, Robert (Persistent Memory)" <elliott@hpe.com> writes:

    >> -----Original Message-----
    >> From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel-
    >> owner@vger.kernel.org] On Behalf Of Matt Fleming
    >> Sent: Friday, May 06, 2016 4:39 PM
    > ...
    >> Subject: [PATCH 2/5] efibc: Fix excessive stack footprint warning
    >>
    >> From: Jeremy Compostella <jeremy.compostella@intel.com>
    >>
    > ...
    >>
    >> -static void efibc_set_variable(const char *name, const char *value)
    >> +static int efibc_set_variable(const char *name, const char *value)
    >> {
    >> int ret;
    >> efi_guid_t guid = LINUX_EFI_LOADER_ENTRY_GUID;
    >> - struct efivar_entry entry;
    >> + struct efivar_entry *entry;
    >> size_t size = (strlen(value) + 1) * sizeof(efi_char16_t);
    >>
    >> - if (size > sizeof(entry.var.Data))
    >> + if (size > sizeof(entry->var.Data)) {
    >> pr_err("value is too large");
    >
    > That pr_err is introduced by patch 25/40 of the first series.
    >
    > How about including the name of the variable for which this is failing,
    > like the final pr_err?
    >
    >> + return -EINVAL;
    >> + }
    >>
    >> - efibc_str_to_str16(name, entry.var.VariableName);
    >> - efibc_str_to_str16(value, (efi_char16_t *)entry.var.Data);
    >> - memcpy(&entry.var.VendorGuid, &guid, sizeof(guid));
    >> + entry = kmalloc(sizeof(*entry), GFP_KERNEL);
    >> + if (!entry) {
    >> + pr_err("failed to allocate efivar entry");
    >
    > How about including the name of the variable for which this
    > is failing, like the final pr_err?
    >
    >> + return -ENOMEM;
    >> + }
    >>
    >> - ret = efivar_entry_set(&entry,
    >> + efibc_str_to_str16(name, entry->var.VariableName);
    >> + efibc_str_to_str16(value, (efi_char16_t *)entry->var.Data);
    >> + memcpy(&entry->var.VendorGuid, &guid, sizeof(guid));
    >> +
    >> + ret = efivar_entry_set(entry,
    >> EFI_VARIABLE_NON_VOLATILE
    >> | EFI_VARIABLE_BOOTSERVICE_ACCESS
    >> | EFI_VARIABLE_RUNTIME_ACCESS,
    >> - size, entry.var.Data, NULL);
    >> + size, entry->var.Data, NULL);
    >> if (ret)
    >> pr_err("failed to set %s EFI variable: 0x%x\n",
    >> name, ret);
    >> +
    >> + kfree(entry);
    >> + return ret;
    >> }
    >

    --
    One Emacs to rule them all
    \
     
     \ /
      Last update: 2016-05-10 11:01    [W:2.551 / U:0.336 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site