Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753019AbdF0MjT (ORCPT ); Tue, 27 Jun 2017 08:39:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43614 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752128AbdF0MjN (ORCPT ); Tue, 27 Jun 2017 08:39:13 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8805C64D28 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=bhe@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8805C64D28 From: Baoquan He To: mingo@kernel.org, linux-kernel@vger.kernel.org Cc: tglx@linutronix.de, hpa@zytor.com, Baoquan He Subject: [PATCH v2 0/2] x86/boot/KASLR: Code bug fix about kernel virtual address randomization Date: Tue, 27 Jun 2017 20:39:04 +0800 Message-Id: <1498567146-11990-1-git-send-email-bhe@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 27 Jun 2017 12:39:12 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1219 Lines: 30 People complained that crashkernel high doesn't work when kaslr code compiled in but add 'nokaslr' to diable it. Kexec has the same phenomenon. The root cause is a code bug which assigned the original loading address of kernel to the local variable 'virt_addr' which represents the offset of kernel virtual address randmoization. As we know, kernel can be loaded to anywhere under 64T physically, this wrong assignment could cause kernel relocation handling of x86 64 error if no kaslr is taken. The v1 post can be found here: x86/boot/KASLR: Skip relocation handling in no kaslr case https://patchwork.kernel.org/patch/9807789/ In v2, Ingo suggested that we should add a judgement to check if 'virt_addr' is randomized to make kernel beyond the kernel mapping area. This checking can let us know the error but not reset to firmware quietly as it does now. Baoquan He (2): x86/boot/KASLR: Add checking for the offset of kernel virtual address randomization x86/boot/KASLR: Fix the wrong assignment to 'virt_addr' arch/x86/boot/compressed/kaslr.c | 3 --- arch/x86/boot/compressed/misc.c | 6 ++++-- arch/x86/boot/compressed/misc.h | 2 -- 3 files changed, 4 insertions(+), 7 deletions(-) -- 2.5.5