Re: [PATCH 2/5] efibc: Fix excessive stack footprint warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You're right.  Here is the new patch.

Thanks,

Jérémy

>From 3a54e6872e220e1ac4db0eae126a20b5383dae3e Mon Sep 17 00:00:00 2001
From: Jeremy Compostella <jeremy.compostella@xxxxxxxxx>
Date: Tue, 10 May 2016 10:34:21 +0200
Subject: [PATCH] efibc: report more information in the error messages

Report the name of the EFI variable if the value size is too large or
if efibc_set_variable() fails to allocate the struct efivar_entry
object.  If efibc_set_variable() fails because the value size is too
large, it also reports the value size in the error message.

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

diff --git a/drivers/firmware/efi/efibc.c b/drivers/firmware/efi/efibc.c
index cb4f573..369edb5 100644
--- a/drivers/firmware/efi/efibc.c
+++ b/drivers/firmware/efi/efibc.c
@@ -37,13 +37,15 @@ 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 (%zu bytes) for %s EFI variable\n",
+		       size, 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\n",
+		       name);
 		return -ENOMEM;
 	}
 
-- 
1.9.1

Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx> writes:

> On Tue, 10 May, at 10:40:22AM, Jeremy Compostella wrote:
>> Why not.  See patch as attachment.
>> 
>> Thanks,
>> 
>> Jérémy
>> 
>
>> From 8a9b07e2d7242fa8a36157f1025202a96c3c7c9a Mon Sep 17 00:00:00 2001
>> From: Jeremy Compostella <jeremy.compostella@xxxxxxxxx>
>> 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@xxxxxxxxx>
>> ---
>>  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;
>>  	}
>
> It'd be a good idea to print 'size' too.
>
>>  
>>  	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;
>>  	}
>
> Aren't these pr_err() calls missing newline characters?

-- 
One Emacs to rule them all

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux