mirror of https://gitee.com/openkylin/linux.git
arm64: efi: deal with NULL return value of early_memremap()
Add NULL return value checks to two invocations of early_memremap() in the UEFI init code. For the UEFI configuration tables, we just warn since we have a better chance of being able to report the issue in a way that can actually be noticed by a human operator if we don't abort right away. For the UEFI memory map, however, all we can do is panic() since we cannot proceed without a description of memory. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk> Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
1944bf8e78
commit
81d945772a
|
@ -127,7 +127,11 @@ static int __init uefi_init(void)
|
||||||
table_size = sizeof(efi_config_table_64_t) * efi.systab->nr_tables;
|
table_size = sizeof(efi_config_table_64_t) * efi.systab->nr_tables;
|
||||||
config_tables = early_memremap(efi_to_phys(efi.systab->tables),
|
config_tables = early_memremap(efi_to_phys(efi.systab->tables),
|
||||||
table_size);
|
table_size);
|
||||||
|
if (config_tables == NULL) {
|
||||||
|
pr_warn("Unable to map EFI config table array.\n");
|
||||||
|
retval = -ENOMEM;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
retval = efi_config_parse_tables(config_tables, efi.systab->nr_tables,
|
retval = efi_config_parse_tables(config_tables, efi.systab->nr_tables,
|
||||||
sizeof(efi_config_table_64_t), NULL);
|
sizeof(efi_config_table_64_t), NULL);
|
||||||
|
|
||||||
|
@ -209,6 +213,14 @@ void __init efi_init(void)
|
||||||
PAGE_ALIGN(params.mmap_size + (params.mmap & ~PAGE_MASK)));
|
PAGE_ALIGN(params.mmap_size + (params.mmap & ~PAGE_MASK)));
|
||||||
memmap.phys_map = params.mmap;
|
memmap.phys_map = params.mmap;
|
||||||
memmap.map = early_memremap(params.mmap, params.mmap_size);
|
memmap.map = early_memremap(params.mmap, params.mmap_size);
|
||||||
|
if (memmap.map == NULL) {
|
||||||
|
/*
|
||||||
|
* If we are booting via UEFI, the UEFI memory map is the only
|
||||||
|
* description of memory we have, so there is little point in
|
||||||
|
* proceeding if we cannot access it.
|
||||||
|
*/
|
||||||
|
panic("Unable to map EFI memory map.\n");
|
||||||
|
}
|
||||||
memmap.map_end = memmap.map + params.mmap_size;
|
memmap.map_end = memmap.map + params.mmap_size;
|
||||||
memmap.desc_size = params.desc_size;
|
memmap.desc_size = params.desc_size;
|
||||||
memmap.desc_version = params.desc_ver;
|
memmap.desc_version = params.desc_ver;
|
||||||
|
|
Loading…
Reference in New Issue