Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3211947imu; Sun, 9 Dec 2018 20:32:02 -0800 (PST) X-Google-Smtp-Source: AFSGD/XRWLCfzsw44Va/UnD7VqxrozlL/uXG6aFHPM2gGV9VNxHIbZBpQbjVFEsxgzFGvNkep1cp X-Received: by 2002:a17:902:7481:: with SMTP id h1mr10938309pll.341.1544416322764; Sun, 09 Dec 2018 20:32:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544416322; cv=none; d=google.com; s=arc-20160816; b=jdtbDaPLG7IZMskDvQWWM5J1q6dKIh2FsOt1ykCUEzpuv+48mBJbJxYEm4XZVVFuqV LVjD3CdOgPYK76L+vL4W5eURJz37fhNJHiBvL2f0l9sabDDqCIJxLAl0lQNcBWvQfeMI gTPAMYj6ejIZIfjZCIIY4X7vkpvIP+6JxJ4vXW2EcqAzu0MG3FtQegR8jHZg9V4MG2cG 2GuXRCUvaaruJkD6vNNrEoFjuCeTIufmXMhxub4OlIKRy/Xd2SAIw3Ze72pu28IITvM9 XMoiB500gALv+P7MjNpkFLrKdEFpg5n+8p/jxedc6sLudQpWrZLI6MMFDbw9K9sgwCtt lA8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=WqYrze/bAoT/4gMooqPL2/XT93245rfBlBHKUTGmEFE=; b=wQXFj9fMBz1/PC/aJ5g+nlNUj3NKxkz4+9pVq8LUFlY1i6UvPOTxag00oT6UvCC51Z YVtv3Txyr3zT5cf3oWG94tIBViJUozfzrerGAXR+WnfvvHpqjxx0mwfHFsrCJhzo3oT7 PYvD8nI3DMoAEbPQaZW/WlnDXPyIPz2mbbObD4g6YeXW/5NmyXjV7guTpExI5NifLb1V 6M158n4cOA+kCwtKtrOUKGlCy/VdGOHUGmg6OE0ge+/GGAzLEa5sAtrEUaEm0SRofJmh dtcUInSZ4RjL17ufuLkRhUJhpAQZxRVwRi42eub1p0g80QGvRRilAMCbyAIJkKZacv9h 2R2g== 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 p14si9347573pfi.12.2018.12.09.20.31.47; Sun, 09 Dec 2018 20:32:02 -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 S1726769AbeLJEas (ORCPT + 99 others); Sun, 9 Dec 2018 23:30:48 -0500 Received: from vmicros1.altlinux.org ([194.107.17.57]:39846 "EHLO vmicros1.altlinux.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726280AbeLJEao (ORCPT ); Sun, 9 Dec 2018 23:30:44 -0500 Received: from mua.local.altlinux.org (mua.local.altlinux.org [192.168.1.14]) by vmicros1.altlinux.org (Postfix) with ESMTP id CF52B72CC70; Mon, 10 Dec 2018 07:30:41 +0300 (MSK) Received: by mua.local.altlinux.org (Postfix, from userid 508) id C1D4D7CEFE9; Mon, 10 Dec 2018 07:30:41 +0300 (MSK) Date: Mon, 10 Dec 2018 07:30:41 +0300 From: "Dmitry V. Levin" To: Max Filippov , Oleg Nesterov , Andy Lutomirski Cc: Elvira Khabirova , Eugene Syromyatnikov , Chris Zankel , Paul Moore , Eric Paris , linux-xtensa@linux-xtensa.org, linux-audit@redhat.com, linux-kernel@vger.kernel.org Subject: [PATCH v5 19/25] xtensa: define syscall_get_* functions Message-ID: <20181210043041.GS6131@altlinux.org> References: <20181210042352.GA6092@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org syscall_get_* functions are required to be implemented on all architectures in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request. This adds all 5 syscall_get_* functions on xtensa as documented in asm-generic/syscall.h: syscall_get_nr, syscall_get_arguments, syscall_get_error, syscall_get_return_value, and syscall_get_arch. Cc: Max Filippov Cc: Oleg Nesterov Cc: Andy Lutomirski Cc: Elvira Khabirova Cc: Eugene Syromyatnikov Cc: Chris Zankel Cc: Paul Moore Cc: Eric Paris Cc: linux-xtensa@linux-xtensa.org Cc: linux-audit@redhat.com Signed-off-by: Dmitry V. Levin --- Notes: v5: added syscall_get_nr, syscall_get_arguments, syscall_get_error, and syscall_get_return_value v2: added Acked-by v1: added syscall_get_arch arch/xtensa/include/asm/syscall.h | 69 +++++++++++++++++++++++++++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 70 insertions(+) diff --git a/arch/xtensa/include/asm/syscall.h b/arch/xtensa/include/asm/syscall.h index 3673ff1f1bc5..d529c855a144 100644 --- a/arch/xtensa/include/asm/syscall.h +++ b/arch/xtensa/include/asm/syscall.h @@ -8,6 +8,75 @@ * Copyright (C) 2001 - 2007 Tensilica Inc. */ +#include + +static inline int +syscall_get_nr(struct task_struct *task, struct pt_regs *regs) +{ + return regs->syscall; +} + +static inline void +syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, + unsigned int i, unsigned int n, unsigned long *args) +{ + switch (i) { + case 0: + if (!n--) + break; + *args++ = regs->areg[6]; + /* fall through */ + case 1: + if (!n--) + break; + *args++ = regs->areg[3]; + /* fall through */ + case 2: + if (!n--) + break; + *args++ = regs->areg[4]; + /* fall through */ + case 3: + if (!n--) + break; + *args++ = regs->areg[5]; + /* fall through */ + case 4: + if (!n--) + break; + *args++ = regs->areg[8]; + /* fall through */ + case 5: + if (!n--) + break; + *args++ = regs->areg[9]; + /* fall through */ + case 6: + if (!n--) + break; + /* fall through */ + default: + BUG(); + } +} + +static inline long +syscall_get_error(struct task_struct *task, struct pt_regs *regs) +{ + return IS_ERR_VALUE(regs->areg[2]) ? regs->areg[2] : 0; + +static inline long +syscall_get_return_value(struct task_struct *task, struct pt_regs *regs) +{ + return regs->areg[2]; +} + +static inline int +syscall_get_arch(void) +{ + return AUDIT_ARCH_XTENSA; +} + struct pt_regs; asmlinkage long xtensa_ptrace(long, long, long, long); asmlinkage long xtensa_sigreturn(struct pt_regs*); diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h index 1e9808f3a240..bcc0619b046f 100644 --- a/include/uapi/linux/audit.h +++ b/include/uapi/linux/audit.h @@ -425,6 +425,7 @@ enum { #define AUDIT_ARCH_TILEGX32 (EM_TILEGX|__AUDIT_ARCH_LE) #define AUDIT_ARCH_TILEPRO (EM_TILEPRO|__AUDIT_ARCH_LE) #define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_XTENSA (EM_XTENSA) #define AUDIT_PERM_EXEC 1 #define AUDIT_PERM_WRITE 2 -- ldv