diff options
author | Baoquan He <bhe@redhat.com> | 2016-07-01 10:34:40 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-07-08 15:36:19 +0300 |
commit | 6daa2ec0b3e3808c55329d12de3c157cf38b17b0 (patch) | |
tree | d5e027be155e21ed69d63909aa15e9b41721c179 /arch/x86/boot | |
parent | dbf984d825935f61965bcfacfd8e8dfdaf3e8051 (diff) | |
download | linux-6daa2ec0b3e3808c55329d12de3c157cf38b17b0.tar.xz |
x86/KASLR: Fix boot crash with certain memory configurations
Ye Xiaolong reported this boot crash:
|
| XZ-compressed data is corrupt
|
| -- System halted
|
Fix the bug in mem_avoid_overlap() of finding the earliest overlap.
Reported-and-tested-by: Ye Xiaolong <xiaolong.ye@intel.com>
Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/boot')
-rw-r--r-- | arch/x86/boot/compressed/kaslr.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c index 749c9e00c674..010ea16e5f77 100644 --- a/arch/x86/boot/compressed/kaslr.c +++ b/arch/x86/boot/compressed/kaslr.c @@ -285,6 +285,7 @@ static bool mem_avoid_overlap(struct mem_vector *img, if (mem_overlaps(img, &mem_avoid[i]) && mem_avoid[i].start < earliest) { *overlap = mem_avoid[i]; + earliest = overlap->start; is_overlapping = true; } } @@ -299,6 +300,7 @@ static bool mem_avoid_overlap(struct mem_vector *img, if (mem_overlaps(img, &avoid) && (avoid.start < earliest)) { *overlap = avoid; + earliest = overlap->start; is_overlapping = true; } |