]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/x86/boot/compressed/misc.c
x86/boot/KASLR: Add checking for the offset of kernel virtual address randomization
[karo-tx-linux.git] / arch / x86 / boot / compressed / misc.c
index b3c5a5f030ced9e6610aeb84889561a3a0f7500e..6008fa9b74d948ecbeb1193d3bf8973706ae7cec 100644 (file)
@@ -390,6 +390,8 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap,
 #ifdef CONFIG_X86_64
        if (heap > 0x3fffffffffffUL)
                error("Destination address too large");
+       if (virt_addr + max(output_len, kernel_total_size) > KERNEL_IMAGE_SIZE)
+               error("Destination virtual address is beyond the kernel mapping area");
 #else
        if (heap > ((-__PAGE_OFFSET-(128<<20)-1) & 0x7fffffff))
                error("Destination address too large");