From patchwork Mon Mar 18 10:49: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: 160482 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp2500366jad; Mon, 18 Mar 2019 03:49:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqyoiiriLDngmHbFkF5GyX1ScUEcqV94hUI+mJJwcCkWgL25G5K1AVGLtf0/MRqY2CRqG+yi X-Received: by 2002:a63:6a48:: with SMTP id f69mr16788484pgc.7.1552906182405; Mon, 18 Mar 2019 03:49:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552906182; cv=none; d=google.com; s=arc-20160816; b=tGnUcLnzzRGRyDFI2vX9L6TTFGce1fzEt8rIjUlLftIf7L6vFxz3/3LjfYv3UJ2P6E kS0pPTqHCg4WimWYOf0bkXM0kvYEtJNT5B+xLuGdX1JFZlnUnqE2GCIuhU4BKRk0ocff OgztAXZNvNLRtK/AxYv2YdwUXiEZuNMTtTyNUG1uy9k6eGaBdGK7HbwelWLESRMw0i+D bHguUU8LYB30uIneZPnMTdOUEaPLJPxhZuQ72exq7znJ2DjBw+Z0mfisFl1vxICZdCtw QSqWwGdEuiEvHyFU3r9UyhF1x//wuhyib+vRLnjZh/iesYbu1TGe/w0LbMjk9hKeL58y q/qQ== 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=mvwKMhJAJI0pCAq9tT8lkpuCe/fhPu6IAst08dWaY08=; b=Y5C+M4xj5GaZvfuR9FtnL1fdqnPMyosQIPayXICf/aANuMlRdWyIA0zrL7Uaa+XnuU sNYHNR/Dx8s+1GYNb1gJng8xSQp3NCDoX1P8RP/U3Z/DlchuWvUxljlqxSj4bz1z+Ubb i2PZPiB7/RNnFQZAt2VGAZprmdFK2mGcGncdWtW5ZOhNS6aA5pzAyW/kSe/ejTr2Vwtd 82P8h3cybNXTbhoAUYHIufVQngZJKVtl86GUMf1OyyaWgLYJTB/T8j/e4pbmZxT7DkUI nZckNnuWWtCG696SHKXuwWvg3TJRwWIgfReSEdfQHDaPtOEl+yu9odmnwxF3f44W7teE a+qw== 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 n66si9295314pfb.62.2019.03.18.03.49.42; Mon, 18 Mar 2019 03:49: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 S1727600AbfCRKtl (ORCPT + 31 others); Mon, 18 Mar 2019 06:49:41 -0400 Received: from foss.arm.com ([217.140.101.70]:59666 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726449AbfCRKtj (ORCPT ); Mon, 18 Mar 2019 06:49:39 -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 B5E17165C; Mon, 18 Mar 2019 03:49:38 -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 C31143F614; Mon, 18 Mar 2019 03:49:35 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v2 1/6] ptrace: move clearing of TIF_SYSCALL_EMU flag to core Date: Mon, 18 Mar 2019 10:49:20 +0000 Message-Id: <20190318104925.16600-2-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190318104925.16600-1-sudeep.holla@arm.com> References: <20190318104925.16600-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_detach after we return from ptrace_disable to ensure there's no change in the flow. 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 | 4 ++++ 3 files changed, 4 insertions(+), 4 deletions(-) -- 2.17.1 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 771e93f9c43f..4fa3b7f4c3c7 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -534,6 +534,10 @@ static int ptrace_detach(struct task_struct *child, unsigned int data) /* Architecture-specific hardware disable .. */ ptrace_disable(child); +#ifdef TIF_SYSCALL_EMU + clear_tsk_thread_flag(child, TIF_SYSCALL_EMU); +#endif + write_lock_irq(&tasklist_lock); /* * We rely on ptrace_freeze_traced(). It can't be killed and From patchwork Mon Mar 18 10:49:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 160483 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp2500424jad; Mon, 18 Mar 2019 03:49:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqx7uj94G6XOaCfYwAgKrNUKewHeNMO8LP2qnUTmIfcXvu+ewyIVQgfKtqE01LaFKzvsbbfM X-Received: by 2002:a63:6a48:: with SMTP id f69mr16788674pgc.7.1552906186501; Mon, 18 Mar 2019 03:49:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552906186; cv=none; d=google.com; s=arc-20160816; b=vOp2UTMWmej3CbptjA46zTAJUJagJF5UZSJFv3QWl/781Kizf9iJz5E14sRJx0MFxA 5cKM/EeVLxxfXWim/dqkKsdiq6En+3NplTNHQmFDmiOwIV0JOU+v2MBOtBJLIsyMrnNZ 6yRXkhhojIMKo44VlabBbJwHLI95Ze2G4STMEt7sKE4gvb59iMDTLOvhTeyfYjq+Y2vl Pmr/s7hCboHXISNM75Y4I21Po2oqdjHueqtjZJzoTeN31oUUmZStO6EN34v4fjNMf3Kv 1Me31fYzTmTcDJx75ToAPyzyFSz3EB1bLVagAYH84KZM8nje1uTtRJgTOwScGwGFztml CaRA== 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=lWV+rzRtCnrkOhn8PcNi/vTXVJVA5ub7g75UFyjaHy4=; b=DIXreZnUB274krkrFCzcPn0JJk1luuPa8v+NrffEQj01vS1dyjpC1FCx4iyEMpq3lu FUg3kJGVnkD0oK6E57YhxfjI5Qlf2zIFE5r+CBBq1WfsKOkobtyBBQwXT9LNVBI79AM6 o3C5rOITV8qG99pY5VjcyP3wdILGFuayNG0dP+gDFGAWCSZFwRLFSEhYlQ6OyPpgQK0t zd+sYkcrlDpEnq+RofDs6+P4k+f61WGKw+PmwJIgpZpxFKn1i9P3+uUwULr87MQDXKcP a+iMkaa1udaW4BLwgIgk6hlqdxdilpfp9Np37HnPRCcbH/cI/gGcJb9fiV2ARzM20zmw 1B9Q== 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 n66si9295314pfb.62.2019.03.18.03.49.46; Mon, 18 Mar 2019 03:49:46 -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 S1727628AbfCRKtp (ORCPT + 31 others); Mon, 18 Mar 2019 06:49:45 -0400 Received: from foss.arm.com ([217.140.101.70]:59690 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726449AbfCRKtm (ORCPT ); Mon, 18 Mar 2019 06:49:42 -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 ED0F61682; Mon, 18 Mar 2019 03:49:41 -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 0100C3F614; Mon, 18 Mar 2019 03:49:38 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v2 2/6] ptrace: introduce ptrace_syscall_enter to consolidate PTRACE_SYSEMU handling Date: Mon, 18 Mar 2019 10:49:21 +0000 Message-Id: <20190318104925.16600-3-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190318104925.16600-1-sudeep.holla@arm.com> References: <20190318104925.16600-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently each architecture handles PTRACE_SYSEMU in very similar way. It's completely arch independent and can be handled in the code helping to consolidate PTRACE_SYSEMU handling. Let's introduce a hook 'ptrace_syscall_enter' that arch specific syscall entry code can call. Cc: Oleg Nesterov Signed-off-by: Sudeep Holla --- include/linux/ptrace.h | 1 + kernel/ptrace.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) -- 2.17.1 diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index edb9b040c94c..e30f51e3363e 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h @@ -407,6 +407,7 @@ static inline void user_single_step_report(struct pt_regs *regs) #define current_user_stack_pointer() user_stack_pointer(current_pt_regs()) #endif +extern long ptrace_syscall_enter(struct pt_regs *regs); extern int task_current_syscall(struct task_struct *target, long *callno, unsigned long args[6], unsigned int maxargs, unsigned long *sp, unsigned long *pc); diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 4fa3b7f4c3c7..c9c505c483df 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -29,6 +29,7 @@ #include #include #include +#include /* * Access another process' address space via ptrace. @@ -557,6 +558,27 @@ static int ptrace_detach(struct task_struct *child, unsigned int data) return 0; } +/* + * Hook to check and report for PTRACE_SYSEMU, can be called from arch + * arch syscall entry code + */ +long ptrace_syscall_enter(struct pt_regs *regs) +{ +#ifdef TIF_SYSCALL_EMU + if (test_thread_flag(TIF_SYSCALL_EMU)) { + if (tracehook_report_syscall_entry(regs)) + /* + * We can ignore the return code here as we need + * return -1 always for syscall emulation irrespective + * of whether the tracehook report fails or succeed. + */ + ; + return -1L; + } +#endif + return 0; +} + /* * Detach all tasks we were using ptrace on. Called with tasklist held * for writing. From patchwork Mon Mar 18 10:49:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 160484 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp2500458jad; Mon, 18 Mar 2019 03:49:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqyJqUsYRlL9/2Y4ZjUexpm2Sj0NlqJntf1U1P55XDvmaNv/jysW+Us3qr5Mpzu6b1ubcn1n X-Received: by 2002:a17:902:2903:: with SMTP id g3mr18867981plb.222.1552906189439; Mon, 18 Mar 2019 03:49:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552906189; cv=none; d=google.com; s=arc-20160816; b=NTq14aXW7Psqgj6KMGZbTFW1BfNapCx00YZ/4/FZ7E4QMzrOtQ75ZnYAaM7yhg8CK4 XFavJP8VLJica07hsDOm9WgRKcbO3TBx8yKuERSJiDPpkUtl+F3KrTQiUFlhGYTEQwMn BuiXrUosKJxFcupjmxFYVqtoKrhVxELLXXxTvT+XLgX4rFQxzWvLy1uZasExig3/PF8j AzEif0DOjkLfxnsp8o70ENcPR0KyRbh3nzbjzMSNQVUuu9UOPXMYn2sREF1VXFqbAphS aWPmQQn+4CwV40zbz/EQY2ZcdCgeIPSPwCmVBe69z5VDlB5g3SMa/4PqbS3IxZhOAVgG 2DCA== 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=WWcMzIDrjlOXdZz6rHwQrTNxBR7/csCbjCmYSoVBofY=; b=VAoQ2X3EQK13zc0jyMIhFYgkv/dVLdUIlkWzvqia8GcBGORDP0Ow7ls6qAwgxExNwN tAVkTOyMzk3G1aP/Rzt7L75ptRJYTgcZghQ8SO+tV+FGm1ye5dEyidt17ik4wcBYbQXp d2vcJgG1BaFUnRAFgGhM9CU4Z0s9aD2IesyEoA4yZc1MgzYQ14upOrRs33fweFZCql4E GFe8uZi5PBF8LymFQIFLBW9QSjhTLmdkoED4iuA+cUJMntO0JKFQ8FI7BStfcBDAo41F OS5CDGCbj+fWpD8/0fTAYct6g50mIpBJaSn4o0oznulnM6jJAenPccprXqUUgDUZMS5Z XYfg== 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 y5si9007474plk.150.2019.03.18.03.49.49; Mon, 18 Mar 2019 03:49:49 -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 S1727674AbfCRKtr (ORCPT + 31 others); Mon, 18 Mar 2019 06:49:47 -0400 Received: from foss.arm.com ([217.140.101.70]:59722 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727632AbfCRKtp (ORCPT ); Mon, 18 Mar 2019 06:49:45 -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 4E6271A25; Mon, 18 Mar 2019 03:49:45 -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 372653F614; Mon, 18 Mar 2019 03:49:42 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski , Borislav Petkov Subject: [PATCH v2 3/6] x86: clean up _TIF_SYSCALL_EMU handling using ptrace_syscall_enter hook Date: Mon, 18 Mar 2019 10:49:22 +0000 Message-Id: <20190318104925.16600-4-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190318104925.16600-1-sudeep.holla@arm.com> References: <20190318104925.16600-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that we have a new hook ptrace_syscall_enter that can be called from syscall entry code and it handles PTRACE_SYSEMU in generic code, we can do some cleanup using the same in syscall_trace_enter. Further the extra logic to find single stepping PTRACE_SYSEMU_SINGLESTEP in syscall_slow_exit_work seems unnecessary. Let's remove the same. Cc: Andy Lutomirski Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Signed-off-by: Sudeep Holla --- arch/x86/entry/common.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) -- 2.17.1 diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c index 7bc105f47d21..5d7590994964 100644 --- a/arch/x86/entry/common.c +++ b/arch/x86/entry/common.c @@ -70,22 +70,16 @@ 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; - - if (unlikely(work & _TIF_SYSCALL_EMU)) - emulated = true; - - if ((emulated || (work & _TIF_SYSCALL_TRACE)) && - tracehook_report_syscall_entry(regs)) + if (unlikely(ptrace_syscall_enter(regs))) return -1L; - if (emulated) + work = READ_ONCE(ti->flags) & _TIF_WORK_SYSCALL_ENTRY; + if ((work & _TIF_SYSCALL_TRACE) && tracehook_report_syscall_entry(regs)) return -1L; #ifdef CONFIG_SECCOMP From patchwork Mon Mar 18 10:49:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 160485 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp2500522jad; Mon, 18 Mar 2019 03:49:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqx7YTxVVrOHE0ENG1Z4vXG2hq3HwRr8AoxRxLJnxpXNW2SQWgvpnxyrEQZh2XKGmQS1DJ0E X-Received: by 2002:a17:902:8506:: with SMTP id bj6mr19066755plb.60.1552906193357; Mon, 18 Mar 2019 03:49:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552906193; cv=none; d=google.com; s=arc-20160816; b=fuOFotuU/D5wOrX1kx8AcHyesXfyW6F+WVKfUJ3Iov0Pr05VEUsmPUraexDNCe/3Xc kZvnl5lYRX2/Kb/BaMs23Skro/x0PuqPhYNoxwNAfMwLYo6SsAKCgslvzgFdoovXtPl6 ITxM/1KoqIDyp437rCM8rg1y1R10PAHcv9TxO7Ls6kSVIWyknuHwm+7MhdIbDosUwO2O vBQh/cr9epbnojq3+kU11JbVf/zTY68LZLFhI1Cb5q9uUr3xBvrSJkwNe/OvLJ150sH8 uKIkxFjUunCnCk38X6J+9evWV03b0n/97qGQ6hOxaoWjNNpPL4clPvcTRLxzGg0ZpntU xd2A== 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=26z/nkogKM0IGAMwbEelqB88p5s/vBdplxcyH6sIp8I=; b=uYSOE127Cs0fvMTcFUE0CaLsZ4O7yWr0oY9VRH2PDrdNfJ/OgxPhNW/xhM5dgK8mEk 8PHgBU5f40i0zazrohMinkuMSlCc7yKlWUF/KYI1D139XjlRsMsPBp1wwdFCFdSFi8j2 hT8DgPLD3YsrWp4XBrQ+HvZ69pcA4VxhDBvLhKZmgVPwp2bwvu0ubUF05WorgFIUvJ3g bKCf7/fDEzOWPACbzSthTnUN2eDXk4U7qxAz4v4GBtF7+CkKcNkla+/IXZMQw5k4IsW2 ZeraBQ6CeCbGCeHsLzpl36XW6e3NQwdMOB4Necmwx7sMFdZCqMgDHPFT5wLrMiuV+pVV H48w== 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 y5si9007474plk.150.2019.03.18.03.49.53; Mon, 18 Mar 2019 03:49:53 -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 S1727717AbfCRKtv (ORCPT + 31 others); Mon, 18 Mar 2019 06:49:51 -0400 Received: from foss.arm.com ([217.140.101.70]:59758 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727632AbfCRKts (ORCPT ); Mon, 18 Mar 2019 06:49:48 -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 816E4174E; Mon, 18 Mar 2019 03:49:48 -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 8D41B3F614; Mon, 18 Mar 2019 03:49:45 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v2 4/6] powerpc: use common ptrace_syscall_enter hook to handle _TIF_SYSCALL_EMU Date: Mon, 18 Mar 2019 10:49:23 +0000 Message-Id: <20190318104925.16600-5-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190318104925.16600-1-sudeep.holla@arm.com> References: <20190318104925.16600-1-sudeep.holla@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that we have a new hook ptrace_syscall_enter that can be called from syscall entry code and it handles PTRACE_SYSEMU in generic code, we can do some cleanup using the same in do_syscall_trace_enter. Cc: Oleg Nesterov Cc: Paul Mackerras Cc: Michael Ellerman Signed-off-by: Sudeep Holla --- arch/powerpc/kernel/ptrace.c | 48 ++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 27 deletions(-) -- 2.17.1 diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index 2e2183b800a8..05579a5dcb12 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c @@ -3278,35 +3278,29 @@ long do_syscall_trace_enter(struct pt_regs *regs) user_exit(); - flags = READ_ONCE(current_thread_info()->flags) & - (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE); - - if (flags) { - int rc = tracehook_report_syscall_entry(regs); + if (unlikely(ptrace_syscall_enter(regs))) { + /* + * A nonzero return code from tracehook_report_syscall_entry() + * tells us to prevent the syscall execution, but we are not + * going to execute it anyway. + * + * Returning -1 will skip the syscall execution. We want to + * avoid clobbering any registers, so we don't goto the skip + * label below. + */ + return -1; + } - if (unlikely(flags & _TIF_SYSCALL_EMU)) { - /* - * A nonzero return code from - * tracehook_report_syscall_entry() tells us to prevent - * the syscall execution, but we are not going to - * execute it anyway. - * - * Returning -1 will skip the syscall execution. We want - * to avoid clobbering any registers, so we don't goto - * the skip label below. - */ - return -1; - } + flags = READ_ONCE(current_thread_info()->flags) & _TIF_SYSCALL_TRACE; - if (rc) { - /* - * The tracer decided to abort the syscall. Note that - * the tracer may also just change regs->gpr[0] to an - * invalid syscall number, that is handled below on the - * exit path. - */ - goto skip; - } + if (flags && tracehook_report_syscall_entry(regs)) { + /* + * The tracer decided to abort the syscall. Note that + * the tracer may also just change regs->gpr[0] to an + * invalid syscall number, that is handled below on the + * exit path. + */ + goto skip; } /* Run seccomp after ptrace; allow it to set gpr[3]. */ From patchwork Mon Mar 18 10:49:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 160486 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp2500573jad; Mon, 18 Mar 2019 03:49:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqz9EJL3CkEpKdIaBV2j7c1kf3x00348562bUStJpldhuAF9kZ/1hZiKmLnQ9gfAT6Cc1MUw X-Received: by 2002:a63:c511:: with SMTP id f17mr17038511pgd.202.1552906196156; Mon, 18 Mar 2019 03:49:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552906196; cv=none; d=google.com; s=arc-20160816; b=F4lki7+DcmHuwbajNxCWKTCzoYXls7v0fPJPna8NBt+HDFYUW1uHjenpM+x4n9/YwH YBMDzREAp9cCHDf6MQDbge5flzRPQzrf72bBTMdHUIGycmdZxIiGTsuiEck80DoWVxBJ Z5+mw8maUmXTEXbg/WfYnxlTsIK3pntds3pyvJZX5M0IDxFtfwJNZnEq+uvo4nuKlU4V HMQO31y/C6GIcwbnLV66AeWnZNnX/ouQ4Tn4bFwuHIT5lDJoB5Fs6vJb3faZNDij4Bo3 Xr8ICe0ShJ5rbGV4mEmNI+jJkBwSQsbUztNwmHekDHZkbtUSiv1hg95mcpf8HmJfyg2h SiLw== 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=9vzgF4YzFoZA3jl6grIlJcp0XU2QZdMEr3ipmrJHPyk=; b=rTboYkyyIR8C4havmeOJccQ+tS/gmqhmkqZ8/0ZQhmMvmZd0rwHsU6rihcYWQQHdZR 5k88jtAFuJjyOtRosiOeBML3hrPQAOc+lKjggTnu15YLX2IYuoPCUyjZpwXTDG2ae++J Em5qX7hmmNWxSSyH1FjGGM3zjxMDWbaxzAVwj0n+vGpFD0smvsxwg7JX7ft4upU8zrQv 5LlIGM8JXCO0C+c4bDFlvmo1k3QBUIAR5s62VMzy6AWBhlVSk6t031yp96RMiPRNair7 qK7R1ne7Dcdtqv65kfKX3a2meYAWILi3AjPtv+I4EEt/4nO9HWqslcxjM5bwtivOHgIu aQzQ== 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 cv7si9628987plb.322.2019.03.18.03.49.55; Mon, 18 Mar 2019 03:49: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; 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 S1727756AbfCRKty (ORCPT + 31 others); Mon, 18 Mar 2019 06:49:54 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:59786 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727723AbfCRKtw (ORCPT ); Mon, 18 Mar 2019 06:49:52 -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 BD7B880D; Mon, 18 Mar 2019 03:49:51 -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 C11C13F614; Mon, 18 Mar 2019 03:49:48 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v2 5/6] arm64: add PTRACE_SYSEMU{, SINGLESTEP} definations to uapi headers Date: Mon, 18 Mar 2019 10:49:24 +0000 Message-Id: <20190318104925.16600-6-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190318104925.16600-1-sudeep.holla@arm.com> References: <20190318104925.16600-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. 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 Mon Mar 18 10:49:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 160487 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp2500619jad; Mon, 18 Mar 2019 03:49:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqx19QtAPtmAYjdEuDqhaY4b0+4vYSPNVxVb8zV7gJgc7UsX73+KWs9xFQmA1Zljdkq6+YXx X-Received: by 2002:a17:902:7e46:: with SMTP id a6mr19312468pln.150.1552906199528; Mon, 18 Mar 2019 03:49:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552906199; cv=none; d=google.com; s=arc-20160816; b=VOt8UfJQNnxTx9BwDAqOK7fa6S2W8I49Rwwu/FtAW0m4EslIfQR5Qe62CRtKT9mI72 dhXtCNy9pCzcX4vdzqqMaGgqzgNzmLYYVX41ZE9rKuOA4mFgZceC2qGseGoloqnMBaDk xqPkjNSOA2f1AQ7BO0tIOYLPOL8ScZNXPP81xFJzbXCm+rNbs5kIuF+gSTGnBTbAokXe zBsc5G02xZnuRjrFbhweBoiNUd6ojOrbG2m0/I+Ji686xZgzdfYE4VkvKWHDlQxlMh9u 8ioXHh4ljX/SJOM2SuCNIUjDemwg5VqoVDjTNBZSY6UoVZxgiLkHbRjlwp87u+dyVx5z zQ/w== 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=JyWRDZTjgGDuCrslIj+z9GhlP/S7piQ5pVRASDF2OOQ=; b=m5W+GbrN0yJCTLkjjYtPrgLDj7+2X/WJvJJ7vheJQMeUaEN4C1jS332kV74C/uCrsG wEv9922Wmh7bH/tvcWa8srta7ypBKmNFDr+rTkCl8y+2Ou/vaGMYorc5P4Uu+zKmD83I EG9ATCuwOaEBngUtd94iyEUNlqAVpsEsImz2btsQYgBtrDD0T8lp8pfNKf31Q4QnU5S3 XYIHExHf7L4qFsMy2MhKMdH5UQ2Kc8bHwuljck8pc/kCokUm9VODOgsYfLyYr0Em8aG7 rNZeo7hN/cG6UQXOPWvkq+XLIV1r4Tz1q5XFwuIdj5qcs0y3TtSjVneiVoHfE5B+dorI yQTQ== 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 cv7si9628987plb.322.2019.03.18.03.49.59; Mon, 18 Mar 2019 03:49:59 -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 S1727797AbfCRKt6 (ORCPT + 31 others); Mon, 18 Mar 2019 06:49:58 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:59816 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727723AbfCRKtz (ORCPT ); Mon, 18 Mar 2019 06:49:55 -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 F36CC165C; Mon, 18 Mar 2019 03:49:54 -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 084643F614; Mon, 18 Mar 2019 03:49:51 -0700 (PDT) From: Sudeep Holla To: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: Sudeep Holla , Catalin Marinas , Will Deacon , Oleg Nesterov , Paul Mackerras , Michael Ellerman , Thomas Gleixner , Ingo Molnar , Richard Weinberger , jdike@addtoit.com, Steve Capper , Haibo Xu , Bin Lu , Andy Lutomirski Subject: [PATCH v2 6/6] arm64: ptrace: add support for syscall emulation Date: Mon, 18 Mar 2019 10:49:25 +0000 Message-Id: <20190318104925.16600-7-sudeep.holla@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190318104925.16600-1-sudeep.holla@arm.com> References: <20190318104925.16600-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 can just make sure of the generic ptrace_syscall_enter hook to support PTRACE_SYSEMU. We don't need any special handling for PTRACE_SYSEMU_SINGLESTEP. Cc: Catalin Marinas Cc: Will Deacon Signed-off-by: Sudeep Holla --- arch/arm64/include/asm/thread_info.h | 5 ++++- arch/arm64/kernel/ptrace.c | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) -- 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..cf29275cd4d9 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -1819,6 +1819,9 @@ static void tracehook_report_syscall(struct pt_regs *regs, int syscall_trace_enter(struct pt_regs *regs) { + if (unlikely(ptrace_syscall_enter(regs))) + return -1; + if (test_thread_flag(TIF_SYSCALL_TRACE)) tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER);