diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2013-06-21 06:01:21 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-06-21 06:01:21 -0400 |
commit | df91c3513f9a1da5388a5d5972fe4f777fe0d516 (patch) | |
tree | 39c44a690d42d5a3cc521d8fd34c3eb6916452cf | |
parent | b52e0a7c4e4100f8683af508664e60e1603070f9 (diff) | |
parent | b8cb62f82103083a6e8fa5470bfe634a2c06514d (diff) |
Merge tag 'efi-urgent' into x86/urgent
* Don't leak random kernel memory to EFI variable NVRAM when attempting
to initiate garbage collection. Also, free the kernel memory when
we're done with it instead of leaking - Ben Hutchings
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r-- | arch/x86/platform/efi/efi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index 5ae2eb09419e..d2fbcedcf6ea 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c | |||
@@ -1069,7 +1069,10 @@ efi_status_t efi_query_variable_store(u32 attributes, unsigned long size) | |||
1069 | * that by attempting to use more space than is available. | 1069 | * that by attempting to use more space than is available. |
1070 | */ | 1070 | */ |
1071 | unsigned long dummy_size = remaining_size + 1024; | 1071 | unsigned long dummy_size = remaining_size + 1024; |
1072 | void *dummy = kmalloc(dummy_size, GFP_ATOMIC); | 1072 | void *dummy = kzalloc(dummy_size, GFP_ATOMIC); |
1073 | |||
1074 | if (!dummy) | ||
1075 | return EFI_OUT_OF_RESOURCES; | ||
1073 | 1076 | ||
1074 | status = efi.set_variable(efi_dummy_name, &EFI_DUMMY_GUID, | 1077 | status = efi.set_variable(efi_dummy_name, &EFI_DUMMY_GUID, |
1075 | EFI_VARIABLE_NON_VOLATILE | | 1078 | EFI_VARIABLE_NON_VOLATILE | |
@@ -1089,6 +1092,8 @@ efi_status_t efi_query_variable_store(u32 attributes, unsigned long size) | |||
1089 | 0, dummy); | 1092 | 0, dummy); |
1090 | } | 1093 | } |
1091 | 1094 | ||
1095 | kfree(dummy); | ||
1096 | |||
1092 | /* | 1097 | /* |
1093 | * The runtime code may now have triggered a garbage collection | 1098 | * The runtime code may now have triggered a garbage collection |
1094 | * run, so check the variable info again | 1099 | * run, so check the variable info again |