lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <1410633376-8822-2-git-send-email-ricardo.neri-calderon@linux.intel.com> Date: Sat, 13 Sep 2014 11:36:11 -0700 From: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com> To: Matt Fleming <matt.fleming@...el.com> Cc: "H. Peter Anvin" <hpa@...ux.intel.com>, linux-efi@...r.kernel.org, linux-kernel@...r.kernel.org, "Glenn P. Williamson" <glenn.p.williamson@...el.com>, Ricardo Neri <ricardo.neri-calderon@...ux.intel.com> Subject: [PATCH 1/6] x86/efi: find mem descriptor from phys address Several functions (efi_mem_type, efi_mem_attributes, efi_lookup_mapped_addr) scan the memory map looking for the memory descriptor to which a given physical address belongs for various purposes. The scan functionality is duplicated in all the three functions. The common functionality is consolidated into a single function that three functions mentioned above may call. When checking the validity of the validity of the memory map, use efi_enabled(), provided for this purpose. Signed-off-by: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com> --- arch/x86/platform/efi/efi.c | 21 ++++++++++++++++++++- include/linux/efi.h | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index 850da94..782d617 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c @@ -900,8 +900,27 @@ void __init efi_enter_virtual_mode(void) } /* - * Convenience functions to obtain memory types and attributes + * Convenience functions to obtain memory descriptors, + * memory types and attributes */ +efi_memory_desc_t *efi_memory_descriptor(unsigned long phys_addr) +{ + efi_memory_desc_t *md; + void *p; + + if (!efi_enabled(EFI_MEMMAP)) + return NULL; + + for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { + md = p; + if ((md->phys_addr <= phys_addr) && + (phys_addr < (md->phys_addr + + (md->num_pages << EFI_PAGE_SHIFT)))) + return md; + } + return NULL; +} + u32 efi_mem_type(unsigned long phys_addr) { efi_memory_desc_t *md; diff --git a/include/linux/efi.h b/include/linux/efi.h index 45cb4ff..b36b588 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -866,6 +866,7 @@ static inline efi_status_t efi_query_variable_store(u32 attributes, unsigned lon extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr); extern int efi_config_init(efi_config_table_type_t *arch_tables); extern u64 efi_get_iobase (void); +extern efi_memory_desc_t *efi_memory_descriptor(unsigned long phys_addr); extern u32 efi_mem_type (unsigned long phys_addr); extern u64 efi_mem_attributes (unsigned long phys_addr); extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists