From patchwork Tue Apr 30 17:05:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 163138 Delivered-To: patch@linaro.org Received: by 2002:a92:7e86:0:0:0:0:0 with SMTP id q6csp3487155ill; Tue, 30 Apr 2019 10:05:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqzOcLez7rtqYuBibzZKrxUSA04tdoMnr5gshbr+dkbyjf/T93x/2a3f+2qe03xB2WM0HhN0 X-Received: by 2002:a17:902:8f84:: with SMTP id z4mr15911356plo.124.1556643935980; Tue, 30 Apr 2019 10:05:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556643935; cv=none; d=google.com; s=arc-20160816; b=utVnVm50LxKCTl6MYpsOqxqNgZUQGO65CCdlo2T0jK1OUf3fylXlhYG6s3rrn2FxBu IZfx43cv3paYXOtecd2+9fxgI9vQLXDBQ76f8RoL23t1GglMPi2oaIo+s2Z50D9NLAPP 95xB2ld6ucem6387pBq2luFHH5NeSEtom0v6ZPQ2tGOV6YbRJE0+UtBuxcSAkVo4WpYr h7efcAJoyu3Z+DBJDxn2PdzOHWN/dRxfpNLgZXXBpsgvTW4KIsEghcCexJISKy5GpTP6 ygHF6eIG8Yw5QGcgLxoF3Alpo8mfNoGGce3EgfwSolKNfUs4PpF95m0DvRZ4xrpK+WNB /FMA== 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; bh=xqGrD+NOgpxpd6fEPIHP0xHgCycEfO67Ink/1/rCAV0=; b=LaxEcWXb+432CI8nZwxyU91msgolgUJdAJbfYs5UlfaOOR2rHFNiNOx/ffbv0g2525 vsiFKQnq5f/gVAYCfCf4H6rgeP4atRjKUroExgb5Ekl6z9tBUkhXbKijnLRkvXY62vxN FPxy1iOoGFNrkdW3NlnamY4LrAoTr/WZ95ZVXoWZ14lrIbEfaAE8NaDVSq1OLSGqXjdy A4SuW6hIgOTyRACYZCBMKORQIbBNHyZ1hfQxlvXs2cJ19nLA6xNSGZ3UDJuI88kuGuP7 jhYK/8gypKyGPyK+pN36blqxERVEQxzRQ5O0iHl0Ner8fgF83eW/iDik7a5fDpr+2ub/ 4C9A== 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 t61si996955plb.93.2019.04.30.10.05.34; Tue, 30 Apr 2019 10:05:35 -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 S1726882AbfD3RFe (ORCPT + 30 others); Tue, 30 Apr 2019 13:05:34 -0400 Received: from foss.arm.com ([217.140.101.70]:50408 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725930AbfD3RFc (ORCPT ); Tue, 30 Apr 2019 13:05:32 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1272515A2; Tue, 30 Apr 2019 10:05:32 -0700 (PDT) Received: from usa.arm.com (e107155-lin.cambridge.arm.com [10.1.196.42]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 224E43F5C1; Tue, 30 Apr 2019 10:05:28 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar Subject: [PATCH v3 1/4] ptrace: move clearing of TIF_SYSCALL_EMU flag to core Date: Tue, 30 Apr 2019 18:05:17 +0100 Message-Id: <20190430170520.29470-2-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190430170520.29470-1-sudeep.holla@arm.com> References: <20190430170520.29470-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While the TIF_SYSCALL_EMU is set in ptrace_resume independent of any architecture, currently only powerpc and x86 unset the TIF_SYSCALL_EMU flag in ptrace_disable which gets called from ptrace_detach. Let's move the clearing of TIF_SYSCALL_EMU flag to __ptrace_unlink which gets executed from ptrace_detach and also keep it along with or close to clearing of TIF_SYSCALL_TRACE. Cc: Oleg Nesterov Cc: Paul Mackerras Cc: Michael Ellerman Cc: Thomas Gleixner Cc: Ingo Molnar Signed-off-by: Sudeep Holla --- arch/powerpc/kernel/ptrace.c | 1 - arch/x86/kernel/ptrace.c | 3 --- kernel/ptrace.c | 3 +++ 3 files changed, 3 insertions(+), 4 deletions(-) -- 2.17.1 Acked-by: Oleg Nesterov diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index d9ac7d94656e..2e2183b800a8 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c @@ -2520,7 +2520,6 @@ void ptrace_disable(struct task_struct *child) { /* make sure the single step bit is not set. */ user_disable_single_step(child); - clear_tsk_thread_flag(child, TIF_SYSCALL_EMU); } #ifdef CONFIG_PPC_ADV_DEBUG_REGS diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 4b8ee05dd6ad..45792dbd2443 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -746,9 +746,6 @@ static int ioperm_get(struct task_struct *target, void ptrace_disable(struct task_struct *child) { user_disable_single_step(child); -#ifdef TIF_SYSCALL_EMU - clear_tsk_thread_flag(child, TIF_SYSCALL_EMU); -#endif } #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 6f357f4fc859..16c7fc1eabcf 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -117,6 +117,9 @@ void __ptrace_unlink(struct task_struct *child) BUG_ON(!child->ptrace); clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); +#ifdef TIF_SYSCALL_EMU + clear_tsk_thread_flag(child, TIF_SYSCALL_EMU); +#endif child->parent = child->real_parent; list_del_init(&child->ptrace_entry); From patchwork Tue Apr 30 17:05:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 163139 Delivered-To: patch@linaro.org Received: by 2002:a92:7e86:0:0:0:0:0 with SMTP id q6csp3487216ill; Tue, 30 Apr 2019 10:05:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqyYOOgX6LCjohQcbmtFYvluJZg8LGMT7xwShahjm6LpiMRLKVMzEK0x6Jz0YbFLPIP/ygaw X-Received: by 2002:a65:5206:: with SMTP id o6mr51425508pgp.341.1556643939333; Tue, 30 Apr 2019 10:05:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556643939; cv=none; d=google.com; s=arc-20160816; b=HHkd+YuQAuRHFGGTBE6iVc9O8YABZpXHs+qB9BhU+P3BfbAkjMa3fbjEz0N53l1HWz QXFtY5cKkqduOG7vyGbqydhN8c2ij3d02QvVQTqEs1xbZP1oh+VRn/KV3ZXzaGgD82XL 8lKh1y5tfYgafk+Upaex/LnxWUZvOPcLqOa2XQP3/BcNBp8E7/0jeIPDjg4irjNWH9NM fg7rqklVM8WSO6waJQoHEM2cgoKt3G0KF3SQUNhRvDvISO8MA/klv0rHlKaYLz0Tb8Ts oDn1+B/QUq6M0gkU3/5XfPg/gVrlOeIsIvuqMXPr78Ta0RMIiPqXFAisCYZuKJmnNGRh DdNw== 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; bh=yPaeZdXLz9brTXUdkwRVDLCsR7gf433vc3nHCoFeZ2A=; b=l9vtSeMUBQYpgcJT289GH6WWqgMY3hGSujShV1OMUojaeoeYDQAfjemDCqkscWzPsT NYRbuzav51Zerd+3aLyLlXiyz9EGhKs7SoKtGKYlZe6TpEsPICqxMLycSJFBEqzcwLqM mBLgSU1QwQ5Z+WhIKQSifU/V0q8WRKgioNsbWvbAH/TnFyI+FIqq629h10o9FQgAVlRb AAv4bSDjLEVRdG8oLpYgnmkSAT82lF6T48rDTtegAcAVns2Zlb0UfTlKttylHP2juf97 nSy2rxUL1O4/xcRqAKX7pCHdnQMzCg+X4gs86LuzB0qVXp/JSmkZd12akJ3b/M2BWIdc RkBQ== 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 t61si996955plb.93.2019.04.30.10.05.38; Tue, 30 Apr 2019 10:05:39 -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 S1726900AbfD3RFi (ORCPT + 30 others); Tue, 30 Apr 2019 13:05:38 -0400 Received: from foss.arm.com ([217.140.101.70]:50430 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725930AbfD3RFg (ORCPT ); Tue, 30 Apr 2019 13:05:36 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1CF5B374; Tue, 30 Apr 2019 10:05:35 -0700 (PDT) Received: from usa.arm.com (e107155-lin.cambridge.arm.com [10.1.196.42]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 54B483F5C1; Tue, 30 Apr 2019 10:05:32 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov Subject: [PATCH v3 2/4] x86: simplify _TIF_SYSCALL_EMU handling Date: Tue, 30 Apr 2019 18:05:18 +0100 Message-Id: <20190430170520.29470-3-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190430170520.29470-1-sudeep.holla@arm.com> References: <20190430170520.29470-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The usage of emulated/_TIF_SYSCALL_EMU flags in syscall_trace_enter seems to be bit overcomplicated than required. Let's simplify it. Cc: Andy Lutomirski Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Signed-off-by: Sudeep Holla --- arch/x86/entry/common.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) -- 2.17.1 Signed-off-by: Oleg Nesterov diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c index 7bc105f47d21..c647ddfd5579 100644 --- a/arch/x86/entry/common.c +++ b/arch/x86/entry/common.c @@ -70,23 +70,18 @@ static long syscall_trace_enter(struct pt_regs *regs) struct thread_info *ti = current_thread_info(); unsigned long ret = 0; - bool emulated = false; u32 work; if (IS_ENABLED(CONFIG_DEBUG_ENTRY)) BUG_ON(regs != task_pt_regs(current)); - work = READ_ONCE(ti->flags) & _TIF_WORK_SYSCALL_ENTRY; + work = READ_ONCE(ti->flags); - if (unlikely(work & _TIF_SYSCALL_EMU)) - emulated = true; - - if ((emulated || (work & _TIF_SYSCALL_TRACE)) && - tracehook_report_syscall_entry(regs)) - return -1L; - - if (emulated) - return -1L; + if (work & (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_EMU)) { + ret = tracehook_report_syscall_entry(regs); + if (ret || (work & _TIF_SYSCALL_EMU)) + return -1L; + } #ifdef CONFIG_SECCOMP /* From patchwork Tue Apr 30 17:05:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 163140 Delivered-To: patch@linaro.org Received: by 2002:a92:7e86:0:0:0:0:0 with SMTP id q6csp3487295ill; Tue, 30 Apr 2019 10:05:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqxvtWGsLzEcRDI0WgSt62/mTtTr0/aOR0AuJQ+RwrKi4TWYU1ACFcbZCSCLj5CAuvM6d02E X-Received: by 2002:a65:480c:: with SMTP id h12mr66654553pgs.266.1556643942822; Tue, 30 Apr 2019 10:05:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556643942; cv=none; d=google.com; s=arc-20160816; b=HjOFpEtKKfOutfoPbO1lTLe2pPf/ufvFZbFAeLIrq0+e15ol5WRPwQq6GgLkR8s4ny hQMAQPa6DCVeOcAAjk9E6K8tWzJ4ry69ufJ0kWAl0EBhszENQWPhdryIPnnUZww/zlSa v9DdmqSaNE1fRpHWNej40NCX/Z6PH6w8df3OC5p3XUivWIW7tLQKUuP1rXx6mM9jk4oI XHUfFhL/JisbUX0U7va++Wl9t+/sqXn2OWq15E+Szct45X/yr3V9U7mY4XSPSjL8AKa9 AfzH3KTqSyjCsbP4lik7fPVEZ25AF0XfY8Bq3+hAshZ+0VvGwE9E0oGx7FLnDoC3wPM9 yeng== 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; bh=g5QQEGQLW//t5dOUXT0AbO58BS980jp6eytiOL7yUPE=; b=DlbVueAwbyl8TZX75fgmpM75LyU7le7ROQMYkKnz4rytbKgWd8gT272DWWCTV1veZY PN60JYNLpAcuO+Cx3Qwyn7zCCIn4OLV4ozzoZSZUETDY+9tSC/BfStg+/ihbDA4q3yOy +AxDZWeC2IR42UuWuloXTz9KKuzMQb8zqdGNO6PkIeX9zm9Zox8zDGYDKPST1/exVe4X F7FQQeWslFeiZdDDceLDL0DGr5uNxq0VHGAs26CMp4VVRxI5z+rd5nFLmDI+V4H/7QMu yjlPcblLHZPu3DoHKm29t/s21CLftbkmmtc7BTsswgJqaYTv5xczdU0dvoIgQF6Lo0fh 7uRw== 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 t61si996955plb.93.2019.04.30.10.05.42; Tue, 30 Apr 2019 10:05:42 -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 S1726947AbfD3RFk (ORCPT + 30 others); Tue, 30 Apr 2019 13:05:40 -0400 Received: from foss.arm.com ([217.140.101.70]:50452 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726602AbfD3RFi (ORCPT ); Tue, 30 Apr 2019 13:05:38 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B45BA15BF; Tue, 30 Apr 2019 10:05:37 -0700 (PDT) Received: from usa.arm.com (e107155-lin.cambridge.arm.com [10.1.196.42]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5DA183F5C1; Tue, 30 Apr 2019 10:05:35 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v3 3/4] arm64: add PTRACE_SYSEMU{, SINGLESTEP} definations to uapi headers Date: Tue, 30 Apr 2019 18:05:19 +0100 Message-Id: <20190430170520.29470-4-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190430170520.29470-1-sudeep.holla@arm.com> References: <20190430170520.29470-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org x86 and um use 31 and 32 for PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP while powerpc uses different value maybe for legacy reasons. Though handling of PTRACE_SYSEMU can be made architecture independent, it's hard to make these definations generic. To add to this existing mess few architectures like arm, c6x and sh use 31 for PTRACE_GETFDPIC (get the ELF fdpic loadmap address). It's not possible to move the definations to generic headers. So we unfortunately have to duplicate the same defination to ARM64 if we need to support PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP. Cc: Catalin Marinas Cc: Will Deacon Signed-off-by: Sudeep Holla --- arch/arm64/include/uapi/asm/ptrace.h | 3 +++ 1 file changed, 3 insertions(+) -- 2.17.1 diff --git a/arch/arm64/include/uapi/asm/ptrace.h b/arch/arm64/include/uapi/asm/ptrace.h index d78623acb649..627ac57c1581 100644 --- a/arch/arm64/include/uapi/asm/ptrace.h +++ b/arch/arm64/include/uapi/asm/ptrace.h @@ -62,6 +62,9 @@ #define PSR_x 0x0000ff00 /* Extension */ #define PSR_c 0x000000ff /* Control */ +/* syscall emulation path in ptrace */ +#define PTRACE_SYSEMU 31 +#define PTRACE_SYSEMU_SINGLESTEP 32 #ifndef __ASSEMBLY__ From patchwork Tue Apr 30 17:05:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 163142 Delivered-To: patch@linaro.org Received: by 2002:a92:7e86:0:0:0:0:0 with SMTP id q6csp3487331ill; Tue, 30 Apr 2019 10:05:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqz9uzVnj2gesereBRjuDWIOs41cHt77+ehfxKOBgM0zahD+PZOBcHCoMfn8WmrwtHaJ9yjV X-Received: by 2002:a17:902:1e2:: with SMTP id b89mr68250473plb.278.1556643945119; Tue, 30 Apr 2019 10:05:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556643945; cv=none; d=google.com; s=arc-20160816; b=ZUV2sSXs++BfliVOjRqtR8HKEZKP5z+cYvZrDz7fDXrXFYpc67uTUg7YR3Lv8VgJiX fysx8mP80NOGFmSZm40PntGemWcBd+CMhMIqn591u9fepOYWjXsrwYQfkXWYq8IpwxHp voUBXaZ/3mdmhtO7CFxQFfo4XZJ7ieRJJHy1TiYXy1dG1Kj1lSNFVAZ8mTKTw6HClGWK 6CbHkLpcQfp+JpMqL0Dx3Mx0+Ot+VmFmF1rq8VvQbmRS/IoQE8yYcrfBIZvCbt5YqDf+ cSCWNW3RsLX/GDgARpAezy1Kh97zJcVl42AYejp38vQrFLTX9Imf9NsSEpo0YmlNO3CF 1mHQ== 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; bh=59XaXP43FBL9hyjGMAzpf9hv/vuHv1G6XMiqJmcTKi0=; b=zEUmcc+CRKl0gQZAd3s2btKwT92zpo4Xa4n10kjMmV08rn72mJUl2NOHNkTVKpRp9E iJOg3mfUy4ElkGa457j9gDh1toNit8E30D++mPUR5lToPnoKQvOtRSOJpzC0gGzjopsJ TVqFRuek1SlXdqNFE2m1754a7LtQFHdvRjJKHwewJmCmcESnuz1Gfvs3lN8bcgXk2acq DNgK6WpMntUqelbUUyDSpNF/2ce0+D9yM1jfsFcZzr7/WDYKvbU4uURPD1II8BwHnK55 eiOziGGzbR8llvJnlJJt9jboknuVh719EKfoWPkfF8ejDuXbOPEvJ2Plu3pmqC/c85UM 6pIQ== 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 l2si34573249pgq.416.2019.04.30.10.05.44; Tue, 30 Apr 2019 10:05:45 -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 S1726984AbfD3RFn (ORCPT + 30 others); Tue, 30 Apr 2019 13:05:43 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:50472 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726926AbfD3RFl (ORCPT ); Tue, 30 Apr 2019 13:05:41 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4F8FA15A2; Tue, 30 Apr 2019 10:05:40 -0700 (PDT) Received: from usa.arm.com (e107155-lin.cambridge.arm.com [10.1.196.42]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 0258C3F5C1; Tue, 30 Apr 2019 10:05:37 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v3 4/4] arm64: ptrace: add support for syscall emulation Date: Tue, 30 Apr 2019 18:05:20 +0100 Message-Id: <20190430170520.29470-5-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190430170520.29470-1-sudeep.holla@arm.com> References: <20190430170520.29470-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP support on arm64. We don't need any special handling for PTRACE_SYSEMU_SINGLESTEP. It's quite difficult to generalize handling PTRACE_SYSEMU cross architectures and avoid calls to tracehook_report_syscall_entry twice. Different architecture have different mechanism to indicate NO_SYSCALL and trying to generalise adds more code for no gain. Cc: Catalin Marinas Cc: Will Deacon Signed-off-by: Sudeep Holla --- arch/arm64/include/asm/thread_info.h | 5 ++++- arch/arm64/kernel/ptrace.c | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) Hi Will, While I agree with your idea of consolidation of PTRACE_SYSEMU handling to core, it's quite a lot of change to do that, though it may be simple and confusing with indirection from arch code to core. Regards, Sudeep -- 2.17.1 diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h index eb3ef73e07cf..c285d1ce7186 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -75,6 +75,7 @@ void arch_release_task_struct(struct task_struct *tsk); * TIF_SYSCALL_TRACE - syscall trace active * TIF_SYSCALL_TRACEPOINT - syscall tracepoint for ftrace * TIF_SYSCALL_AUDIT - syscall auditing + * TIF_SYSCALL_EMU - syscall emulation active * TIF_SECOMP - syscall secure computing * TIF_SIGPENDING - signal pending * TIF_NEED_RESCHED - rescheduling necessary @@ -91,6 +92,7 @@ void arch_release_task_struct(struct task_struct *tsk); #define TIF_SYSCALL_AUDIT 9 #define TIF_SYSCALL_TRACEPOINT 10 #define TIF_SECCOMP 11 +#define TIF_SYSCALL_EMU 12 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ #define TIF_FREEZE 19 #define TIF_RESTORE_SIGMASK 20 @@ -109,6 +111,7 @@ void arch_release_task_struct(struct task_struct *tsk); #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) #define _TIF_SECCOMP (1 << TIF_SECCOMP) +#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU) #define _TIF_UPROBE (1 << TIF_UPROBE) #define _TIF_FSCHECK (1 << TIF_FSCHECK) #define _TIF_32BIT (1 << TIF_32BIT) @@ -120,7 +123,7 @@ void arch_release_task_struct(struct task_struct *tsk); #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \ - _TIF_NOHZ) + _TIF_NOHZ | _TIF_SYSCALL_EMU) #define INIT_THREAD_INFO(tsk) \ { \ diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index b82e0a9b3da3..9353355cb91a 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -1819,8 +1819,12 @@ static void tracehook_report_syscall(struct pt_regs *regs, int syscall_trace_enter(struct pt_regs *regs) { - if (test_thread_flag(TIF_SYSCALL_TRACE)) + if (test_thread_flag(TIF_SYSCALL_TRACE) || + test_thread_flag(TIF_SYSCALL_EMU)) { tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); + if (!in_syscall(regs) || test_thread_flag(TIF_SYSCALL_EMU)) + return -1; + } /* Do the secure computing after ptrace; failures should be fast. */ if (secure_computing(NULL) == -1)