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 <keesc...@chromium.org>
Signed-off-by: Yinghai Lu <ying...@kernel.org>
---
 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to