Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932881AbbGGUVQ (ORCPT ); Tue, 7 Jul 2015 16:21:16 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:16561 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757746AbbGGUUv (ORCPT ); Tue, 7 Jul 2015 16:20:51 -0400 From: Yinghai Lu To: Kees Cook , "H. Peter Anvin" , Baoquan He Cc: linux-kernel@vger.kernel.org, Yinghai Lu Subject: [PATCH 05/42] x86, kaslr: rename output_size to output_run_size Date: Tue, 7 Jul 2015 13:19:51 -0700 Message-Id: <1436300428-21163-6-git-send-email-yinghai@kernel.org> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1436300428-21163-1-git-send-email-yinghai@kernel.org> References: <1436300428-21163-1-git-send-email-yinghai@kernel.org> X-Source-IP: aserv0021.oracle.com [141.146.126.233] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4487 Lines: 117 Now we are using output_size as parameter, actually we are passing max(output_len, run_size). Change it to output_run_size to make it less confusing. Cc: Kees Cook Signed-off-by: Yinghai Lu --- arch/x86/boot/compressed/aslr.c | 10 +++++----- arch/x86/boot/compressed/misc.c | 6 ++++-- arch/x86/boot/compressed/misc.h | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/arch/x86/boot/compressed/aslr.c b/arch/x86/boot/compressed/aslr.c index 71520c4..0e1dac0 100644 --- a/arch/x86/boot/compressed/aslr.c +++ b/arch/x86/boot/compressed/aslr.c @@ -135,7 +135,7 @@ static bool mem_overlaps(struct mem_vector *one, struct mem_vector *two) } static void mem_avoid_init(unsigned long input, unsigned long input_size, - unsigned long output, unsigned long output_size) + unsigned long output, unsigned long output_run_size) { u64 initrd_start, initrd_size; u64 cmd_line, cmd_line_size; @@ -146,7 +146,7 @@ static void mem_avoid_init(unsigned long input, unsigned long input_size, * Avoid the region that is unsafe to overlap during * decompression (see calculations at top of misc.c). */ - unsafe_len = (output_size >> 12) + 32768 + 18; + unsafe_len = (output_run_size >> 12) + 32768 + 18; unsafe = (unsigned long)input + input_size - unsafe_len; mem_avoid[0].start = unsafe; mem_avoid[0].size = unsafe_len; @@ -298,7 +298,7 @@ static unsigned long find_random_addr(unsigned long minimum, unsigned char *choose_kernel_location(unsigned char *input, unsigned long input_size, unsigned char *output, - unsigned long output_size) + unsigned long output_run_size) { unsigned long choice = (unsigned long)output; unsigned long random; @@ -319,10 +319,10 @@ unsigned char *choose_kernel_location(unsigned char *input, /* Record the various known unsafe memory ranges. */ mem_avoid_init((unsigned long)input, input_size, - (unsigned long)output, output_size); + (unsigned long)output, output_run_size); /* Walk e820 and find a random address. */ - random = find_random_addr(choice, output_size); + random = find_random_addr(choice, output_run_size); if (!random) { debug_putstr("KASLR could not find suitable E820 region...\n"); goto out; diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index 96201aa..1c03098 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c @@ -375,6 +375,7 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, { unsigned long run_size = VO__end - VO__text; unsigned char *output_orig = output; + unsigned long output_run_size; real_mode = rmode; @@ -400,14 +401,15 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, free_mem_ptr = heap; /* Heap */ free_mem_end_ptr = heap + BOOT_HEAP_SIZE; + output_run_size = output_len > run_size ? output_len : run_size; + /* * The memory hole needed for the kernel is the larger of either * the entire decompressed kernel plus relocation table, or the * entire decompressed kernel plus .bss and .brk sections. */ output = choose_kernel_location(input_data, input_len, output, - output_len > run_size ? output_len - : run_size); + output_run_size); /* Validate memory location choices. */ if ((unsigned long)output & (MIN_KERNEL_ALIGN - 1)) diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/misc.h index 8c96cc5..40b4546 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -59,7 +59,7 @@ int cmdline_find_option_bool(const char *option); unsigned char *choose_kernel_location(unsigned char *input, unsigned long input_size, unsigned char *output, - unsigned long output_size); + unsigned long output_run_size); /* cpuflags.c */ bool has_cpuflag(int flag); #else @@ -67,7 +67,7 @@ static inline unsigned char *choose_kernel_location(unsigned char *input, unsigned long input_size, unsigned char *output, - unsigned long output_size) + unsigned long output_run_size) { return output; } -- 1.8.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/