2015-04-02 07:39:24

by Ross Lagerwall

[permalink] [raw]
Subject: [PATCH RESEND] efivarfs: Ensure VariableName is NUL-terminated

Some buggy firmware implementations update VariableNameSize on success
such that it does not include the final NUL character which results in
garbage in the efivarfs name entries. Use kzalloc on the efivar_entry
(as is done in efivars.c) to ensure that the name is always
NUL-terminated.

The buggy firmware is:
BIOS Information
Vendor: Intel Corp.
Version: S1200RP.86B.02.02.0005.102320140911
Release Date: 10/23/2014
BIOS Revision: 4.6
System Information
Manufacturer: Intel Corporation
Product Name: S1200RP_SE

Signed-off-by: Ross Lagerwall <[email protected]>
---
fs/efivarfs/super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
index ddbce42..acf9a67 100644
--- a/fs/efivarfs/super.c
+++ b/fs/efivarfs/super.c
@@ -121,7 +121,7 @@ static int efivarfs_callback(efi_char16_t *name16, efi_guid_t vendor,
int len, i;
int err = -ENOMEM;

- entry = kmalloc(sizeof(*entry), GFP_KERNEL);
+ entry = kzalloc(sizeof(*entry), GFP_KERNEL);
if (!entry)
return err;

--
2.1.0


2015-04-02 18:29:19

by Matthew Garrett

[permalink] [raw]
Subject: Re: [PATCH RESEND] efivarfs: Ensure VariableName is NUL-terminated

On Thu, 2015-04-02 at 08:39 +0100, Ross Lagerwall wrote:
> Some buggy firmware implementations update VariableNameSize on success
> such that it does not include the final NUL character which results in
> garbage in the efivarfs name entries. Use kzalloc on the efivar_entry
> (as is done in efivars.c) to ensure that the name is always
> NUL-terminated.
>
> The buggy firmware is:
> BIOS Information
> Vendor: Intel Corp.
> Version: S1200RP.86B.02.02.0005.102320140911
> Release Date: 10/23/2014
> BIOS Revision: 4.6
> System Information
> Manufacturer: Intel Corporation
> Product Name: S1200RP_SE
>
> Signed-off-by: Ross Lagerwall <[email protected]>
ACKed-by: Matthew Garrett <[email protected]>

2015-04-06 18:39:57

by Matt Fleming

[permalink] [raw]
Subject: Re: [PATCH RESEND] efivarfs: Ensure VariableName is NUL-terminated

On Thu, 02 Apr, at 08:39:00AM, Ross Lagerwall wrote:
> Some buggy firmware implementations update VariableNameSize on success
> such that it does not include the final NUL character which results in
> garbage in the efivarfs name entries. Use kzalloc on the efivar_entry
> (as is done in efivars.c) to ensure that the name is always
> NUL-terminated.
>
> The buggy firmware is:
> BIOS Information
> Vendor: Intel Corp.
> Version: S1200RP.86B.02.02.0005.102320140911
> Release Date: 10/23/2014
> BIOS Revision: 4.6
> System Information
> Manufacturer: Intel Corporation
> Product Name: S1200RP_SE
>
> Signed-off-by: Ross Lagerwall <[email protected]>
> ---
> fs/efivarfs/super.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Thanks, applied with Matthew's ACK!

--
Matt Fleming, Intel Open Source Technology Center