Explorar o código

efi/arm*: Fix efi_init() error handling

There's an early memmap() leak in the efi_init() error path, fix it.

Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/20161018143318.15673-4-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Yisheng Xie %!s(int64=8) %!d(string=hai) anos
pai
achega
0709a008c9
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      drivers/firmware/efi/arm-init.c

+ 3 - 1
drivers/firmware/efi/arm-init.c

@@ -244,8 +244,10 @@ void __init efi_init(void)
 	     "Unexpected EFI_MEMORY_DESCRIPTOR version %ld",
 	     "Unexpected EFI_MEMORY_DESCRIPTOR version %ld",
 	      efi.memmap.desc_version);
 	      efi.memmap.desc_version);
 
 
-	if (uefi_init() < 0)
+	if (uefi_init() < 0) {
+		efi_memmap_unmap();
 		return;
 		return;
+	}
 
 
 	reserve_regions();
 	reserve_regions();
 	efi_memattr_init();
 	efi_memattr_init();