Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp831565yba; Wed, 24 Apr 2019 10:17:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqz5+/pYu+Ie2s/RXz/dhU5PMlCazAuaDne80rqAyIGwg4NRcLQil4Yci4j4yFwWixb/WlHv X-Received: by 2002:a65:5086:: with SMTP id r6mr3887649pgp.301.1556126276799; Wed, 24 Apr 2019 10:17:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556126276; cv=none; d=google.com; s=arc-20160816; b=V9I5d/k4dg4MmLjXIDtb//4Ca+FB0ZN1YIuBD/1COV4KWizSIlYRaWnSEDOE8S3bTA J8w1kK0vAHBJBWgtySQNAZ6hRri8MrQ1ikC/l/xXajJda7SMkKrGopHtSaLbHtoL4Eev K/tJsSJIXsqSCBCNUsOpY4ZPxN4SN8+16ipMzdKHfsVjH2feUdrclu/JGKHTfv/jBjtJ 9NAvWXRF96LKeITgj2XlS1M9UbcssGxVV7aaP6gTPdDEgMgVs4g2AhSbRxc4P6XyzvnW E8++V5p/EjApWfoXb2ib67+xMO8/LiETlCUkrviIZ2RbLaSWkw1W76FaMFRfZv0psvNo YiJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=tZ5g55CcPoKakXc/PaeTNHPlfNG/fKQg3YAEbZWWT5w=; b=UL3SbzQ3LRzID6NsNL1GgurpO6WO29vshTyOq5njVZhfSCARFVvF/Ki2qnpZ5tCn6/ 6qAQB6Z7FPUBWcYInl/rWHJAPPTj730FFR6EEpOOf+cgO5n6AlphGM+Kqbj8z/Qnb2wZ VH083nw5gH8QCgVnCrJZEmkipLoikePviltxjRXE+h5QWuALCtXoFq09Wvy1w7Gg73au g1j0x9i3QpPHogRpzCph5aurg9cUPnWd8taW2UpVleIdVt0VVfR4KXq8cKR2E36NHaBX DHDu+Juj4P1C8uyzu8BzhzL59tIb3YETHophEWEUgs2ddVjk24JUw6iZ2Hwzemt2XB0M s8zA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=klgZ8Jg1; 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 z143si20460417pfc.64.2019.04.24.10.17.41; Wed, 24 Apr 2019 10:17:56 -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; dkim=pass header.i=@kernel.org header.s=default header.b=klgZ8Jg1; 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 S2388348AbfDXRQB (ORCPT + 99 others); Wed, 24 Apr 2019 13:16:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:40366 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388311AbfDXRPw (ORCPT ); Wed, 24 Apr 2019 13:15:52 -0400 Received: from localhost (62-193-50-229.as16211.net [62.193.50.229]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B597F2054F; Wed, 24 Apr 2019 17:15:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556126152; bh=+rwgGm67nFXmqJ4K2sK5t0ijncT6EQ2QInH63QJbkEk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=klgZ8Jg1AfiCg8y8wQtuwPRWeHIQHtDm2zEMsZrWrhcBPHDbxAMqcB1cn2KAVMz7b buqOEeoIWveuxhAPPbJkI3X4XDbcmw5GsGoLB3TdK/cv/8JRdDJ9Q57n+UERMEGeTu G8MzRebtUlvl3XnP1xaC98YlBEtmQoc4HdF/liWo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mark Rutland , Will Deacon , Catalin Marinas Subject: [PATCH 4.4 001/168] arm64: debug: Dont propagate UNKNOWN FAR into si_code for debug signals Date: Wed, 24 Apr 2019 19:07:25 +0200 Message-Id: <20190424170923.531979936@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190424170923.452349382@linuxfoundation.org> References: <20190424170923.452349382@linuxfoundation.org> User-Agent: quilt/0.66 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Will Deacon commit b9a4b9d084d978f80eb9210727c81804588b42ff upstream. FAR_EL1 is UNKNOWN for all debug exceptions other than those caused by taking a hardware watchpoint. Unfortunately, if a debug handler returns a non-zero value, then we will propagate the UNKNOWN FAR value to userspace via the si_addr field of the SIGTRAP siginfo_t. Instead, let's set si_addr to take on the PC of the faulting instruction, which we have available in the current pt_regs. Cc: Reviewed-by: Mark Rutland Signed-off-by: Will Deacon Signed-off-by: Catalin Marinas Signed-off-by: Greg Kroah-Hartman --- arch/arm64/mm/fault.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -589,11 +589,12 @@ void __init hook_debug_fault_code(int nr debug_fault_info[nr].name = name; } -asmlinkage int __exception do_debug_exception(unsigned long addr, +asmlinkage int __exception do_debug_exception(unsigned long addr_if_watchpoint, unsigned int esr, struct pt_regs *regs) { const struct fault_info *inf = debug_fault_info + DBG_ESR_EVT(esr); + unsigned long pc = instruction_pointer(regs); struct siginfo info; int rv; @@ -604,16 +605,16 @@ asmlinkage int __exception do_debug_exce if (interrupts_enabled(regs)) trace_hardirqs_off(); - if (!inf->fn(addr, esr, regs)) { + if (!inf->fn(addr_if_watchpoint, esr, regs)) { rv = 1; } else { pr_alert("Unhandled debug exception: %s (0x%08x) at 0x%016lx\n", - inf->name, esr, addr); + inf->name, esr, pc); info.si_signo = inf->sig; info.si_errno = 0; info.si_code = inf->code; - info.si_addr = (void __user *)addr; + info.si_addr = (void __user *)pc; arm64_notify_die("", regs, &info, 0); rv = 0; }