Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp122321ybl; Fri, 9 Aug 2019 03:32:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqz99IrIdbQHCj7NLTYx+5hDGiR443Fi+IvrvwC/xqq9lAY+V+P/UGf0A5KOQzYh+ZtC1fPZ X-Received: by 2002:aa7:9473:: with SMTP id t19mr2668736pfq.141.1565346724477; Fri, 09 Aug 2019 03:32:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565346724; cv=none; d=google.com; s=arc-20160816; b=kcgLOwyhli3/lD3RxKAbVkKzqXR8lbfEarPHguR6TMwac87ACShxxyg3poyLxZFh0p 8d09MW+04j0/+Z4+GOxJJGo9rgrO9+d2H08AjmTcadinbFenL1TiiGGN2IQYopk5V5sZ 8eZe8+nKCjJhylYNjXxx/LX01QQuL00iLdgaXrlHSFq2wQWoiPQcaiKVYyS5XBHJNq9m cR+FUpyIAn+DUee7+xEjid9qvoRU6fQPxUnx7sUF0edsEiZkGRgKIbUWXfqcvB7ojOEM EwRfOc1aXGhjRhKZqb9EYD9Mkde/56PFG2FC5du6iNVNFSX01xRcpO38cuMU9zMC+eN+ z2mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=3WET/T/cf1cDTtT/IPPjF72sp/U+IhCFWEcA8q7rDAg=; b=cJ6m4CPC2RP+SX5ByLiSTSl0iqZP+UtxHXGqQhI//Q0IZenU/WRAj+cCbylav2oLAa wsLw57LT1hrHbYjZBPaSP9h4lj+DHh2R2FKOD08E7O5Gzll7ChkbzL2KUxr4oF9mGtmF 6yfWczweJ7okrZ4OPxvrFmujfCqcHaFZHxeerUSq8IFmkW0p5NAeDQY0dgxC0sj0wJ4x h9A5KIqGHT33tv/sOKjdvuPBMY6Ez3VCOYICXrfVXZZvYrf1oNk1aXvvgN/xx54pq7En dhH+1aJcWXENHj4pHQaMexyQriyDwi3lb9ok6J4aE8zp3W5CJuXgjdEHMtyHKdt2r9oq 9hzQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bg10si81188363plb.160.2019.08.09.03.31.48; Fri, 09 Aug 2019 03:32:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406259AbfHIJwH (ORCPT + 99 others); Fri, 9 Aug 2019 05:52:07 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:4223 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2406212AbfHIJwF (ORCPT ); Fri, 9 Aug 2019 05:52:05 -0400 Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 0FD4448BB7BFEF59E24E; Fri, 9 Aug 2019 17:52:03 +0800 (CST) Received: from huawei.com (10.175.124.28) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.439.0; Fri, 9 Aug 2019 17:51:57 +0800 From: Jason Yan To: , , , , , , , , CC: , , , , , , , Jason Yan Subject: [PATCH v6 10/12] powerpc/fsl_booke/kaslr: dump out kernel offset information on panic Date: Fri, 9 Aug 2019 18:07:58 +0800 Message-ID: <20190809100800.5426-11-yanaijie@huawei.com> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190809100800.5426-1-yanaijie@huawei.com> References: <20190809100800.5426-1-yanaijie@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.124.28] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When kaslr is enabled, the kernel offset is different for every boot. This brings some difficult to debug the kernel. Dump out the kernel offset when panic so that we can easily debug the kernel. This code is derived from x86/arm64 which has similar functionality. Signed-off-by: Jason Yan Cc: Diana Craciun Cc: Michael Ellerman Cc: Christophe Leroy Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Nicholas Piggin Cc: Kees Cook Reviewed-by: Christophe Leroy Reviewed-by: Diana Craciun Tested-by: Diana Craciun --- arch/powerpc/include/asm/page.h | 5 +++++ arch/powerpc/kernel/setup-common.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h index 4d32d1b561d6..b34b9cdd91f1 100644 --- a/arch/powerpc/include/asm/page.h +++ b/arch/powerpc/include/asm/page.h @@ -317,6 +317,11 @@ struct vm_area_struct; extern unsigned long kernstart_virt_addr; +static inline unsigned long kaslr_offset(void) +{ + return kernstart_virt_addr - KERNELBASE; +} + #include #endif /* __ASSEMBLY__ */ #include diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 1f8db666468d..ba1a34ab218a 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -715,8 +715,28 @@ static struct notifier_block ppc_panic_block = { .priority = INT_MIN /* may not return; must be done last */ }; +/* + * Dump out kernel offset information on panic. + */ +static int dump_kernel_offset(struct notifier_block *self, unsigned long v, + void *p) +{ + pr_emerg("Kernel Offset: 0x%lx from 0x%lx\n", + kaslr_offset(), KERNELBASE); + + return 0; +} + +static struct notifier_block kernel_offset_notifier = { + .notifier_call = dump_kernel_offset +}; + void __init setup_panic(void) { + if (IS_ENABLED(CONFIG_RANDOMIZE_BASE) && kaslr_offset() > 0) + atomic_notifier_chain_register(&panic_notifier_list, + &kernel_offset_notifier); + /* PPC64 always does a hard irq disable in its panic handler */ if (!IS_ENABLED(CONFIG_PPC64) && !ppc_md.panic) return; -- 2.17.2