Received: by 10.223.185.116 with SMTP id b49csp4173043wrg; Mon, 19 Feb 2018 12:31:52 -0800 (PST) X-Google-Smtp-Source: AH8x226vfN4QnFAmbDeIagJdCUrIRy2f2++gntN0YsC0dNmUkmSXe7D3e9Ec2kpc7Zkqzqoon902 X-Received: by 2002:a17:902:2884:: with SMTP id f4-v6mr15082236plb.35.1519072312315; Mon, 19 Feb 2018 12:31:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519072312; cv=none; d=google.com; s=arc-20160816; b=V1UbdxBwG7MXVm0a/cL130ChjNOGpIkv35/8a0WBlzVprD/FUTGlDTO7m8TXZw1Gfg GLrdgXZyhNAlwVKFsMmDEv0gAz45T95pptsqKIJSu0VmVpYmTwHOYKLPxjhcgNG0X6K5 5/WiDkutFCS8MKrfytnt02OrUynPhh9Nc3k8gEnu2KPJa0xg+HelnpP/q4nIbpxDCexq /97zNLu0fJ+9NmaVs0n19HuO77Y0dE4dh8DNm68pYySSTkDpwF3nxm+gQFYMjohP46bk oA4ErtuTM1SJ8IT446aOdlsvi++eiibpRUsvnz5XJ/Tp3UbaweLcDGPg4tXalSLKIGqP NrLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=S/dxMHfBT3PnsGWNb1LcGs45BYEbQCmeyfraOiTM6Es=; b=Z1VX2PinbDq1UJ6KQvm34QkbSgUpX7Sqzh17PzCQZ+283/v1lfLOySdz0V8c8M4rrO evGy3gIh9QIUuTqhVE9pQv1ci00JwnOorUA5W6nEawGeaa8j/WMxeTVTuxoE1M0nj68X YCMAjDwAc1YI27r0hPJb7LUCuK4g/Wj1HyycTDKcESv1ZGg0WbMYNAlskjlaMXOxFd8u CucZd7tBgwoZngCdgutdilMofsATpcfXDJdb9i6j3FmueR/vXoZVAomw3CkrRVRTZFxX NttwmsuSqkjKxDgIEPZCnlR5OxGkY85UmNLmAyaDusK2wQW0Ia/oEvW/Ras0BRFpx3q7 F96A== 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 p1si4867631pfj.124.2018.02.19.12.31.37; Mon, 19 Feb 2018 12:31:52 -0800 (PST) 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 S932261AbeBSU3X (ORCPT + 99 others); Mon, 19 Feb 2018 15:29:23 -0500 Received: from mail.skyhub.de ([5.9.137.197]:37776 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932350AbeBSU2y (ORCPT ); Mon, 19 Feb 2018 15:28:54 -0500 X-Virus-Scanned: Nedap ESD1 at mail.skyhub.de Received: from mail.skyhub.de ([127.0.0.1]) by localhost (blast.alien8.de [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id wHG3QRNrNo6Z; Mon, 19 Feb 2018 21:28:52 +0100 (CET) Received: from pd.tnic (p200300EC2BC81D00F5823ED58EA92312.dip0.t-ipconnect.de [IPv6:2003:ec:2bc8:1d00:f582:3ed5:8ea9:2312]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id A39621EC08BF; Mon, 19 Feb 2018 21:28:52 +0100 (CET) From: Borislav Petkov To: X86 ML Cc: Peter Zijlstra , Josh Poimboeuf , Andy Lutomirski , LKML Subject: [RFC PATCH 5/5] x86/fault: Dump user opcode bytes on fatal faults Date: Mon, 19 Feb 2018 21:28:26 +0100 Message-Id: <20180219202826.19797-6-bp@alien8.de> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20180219202826.19797-1-bp@alien8.de> References: <20180219202826.19797-1-bp@alien8.de> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Borislav Petkov Sometimes it is useful to see which user opcode bytes RIP points to when a fault happens: be it to rule out RIP corruption, to dump info early during boot, when doing core dumps is impossible due to not having writable fs yet. Sometimes it is useful if debugging an issue and one doesn't have access to the executable which caused the fault in order to disassemble it. That last aspect might have some security implications so show_unhandled_signals could be revisited for that or a new config option added. Signed-off-by: Borislav Petkov --- arch/x86/mm/fault.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 321b78060e93..d81ea7835737 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -851,6 +851,8 @@ static inline void show_signal_msg(struct pt_regs *regs, unsigned long error_code, unsigned long address, struct task_struct *tsk) { + const char *loglvl = task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG; + if (!unhandled_signal(tsk, SIGSEGV)) return; @@ -858,13 +860,14 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code, return; printk("%s%s[%d]: segfault at %lx ip %px sp %px error %lx", - task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG, - tsk->comm, task_pid_nr(tsk), address, + loglvl, tsk->comm, task_pid_nr(tsk), address, (void *)regs->ip, (void *)regs->sp, error_code); print_vma_addr(KERN_CONT " in ", regs->ip); printk(KERN_CONT "\n"); + + show_opcodes((u8 *)regs->ip, loglvl); } static void -- 2.13.0