From patchwork Thu Mar 15 03:11:56 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Drewry X-Patchwork-Id: 146832 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 381BBB6F13 for ; Thu, 15 Mar 2012 14:18:18 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759058Ab2CODOF (ORCPT ); Wed, 14 Mar 2012 23:14:05 -0400 Received: from mail-gx0-f174.google.com ([209.85.161.174]:59709 "EHLO mail-gx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758846Ab2CODN1 (ORCPT ); Wed, 14 Mar 2012 23:13:27 -0400 Received: by gghe5 with SMTP id e5so2600720ggh.19 for ; Wed, 14 Mar 2012 20:13:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=qFDAHRAnkaNwmRxwe31v9EjPtGWBu2xxPEn0RHWLs0Y=; b=jIrhgM+kWTAJfjLdn3Wr0MABStl4swB9uVpQuGaqAbmV+MZXejXGfGFqz8vvY5158R YsfDAnQvAMzN11UF5+2cM+U+8ussV7nJSd0aiIEkiGjGFwWmTb9bOb+Mn6/43fQnDf/t jEd9Q5j5emjDtQav9IH06t6NEUkY7ennx8Gro= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=qFDAHRAnkaNwmRxwe31v9EjPtGWBu2xxPEn0RHWLs0Y=; b=CS2QTbk9jQel9brGD/hnqu+f5GnQIHLNLE/aP5RNxAyb/v/pPX2lV6joAPEEB/4mE+ Sf4I2LaudgRbfexEBwX4KKUyPPCXGiDcQHJlDhYoF+Bpb6eG1UsmsViTvM1oxh/JxWI/ A3Y6b+Vs1YahkKU5mNm5u7W9MXqQHHkhIL25PJpG/brEv5rXhYTyatt8E26pZFkzkIHv lK/OcQbLxm/Ra9P52V/UaQeOr5xnNwdU++3TKjcZBe8fTOny3Ih4nc9+JmlXJgic1kLB yiLtvAQA0ynuphOYKUkyBiAzkA83yeDMo2IVIy4yG6TE6PGEEUntUFL9EibpzASIDSbt GZNg== Received: by 10.236.134.211 with SMTP id s59mr5943339yhi.131.1331781205973; Wed, 14 Mar 2012 20:13:25 -0700 (PDT) Received: from localhost.localdomain (173-164-30-65-Nashville.hfc.comcastbusiness.net. [173.164.30.65]) by mx.google.com with ESMTPS id n35sm1522518yhh.19.2012.03.14.20.13.23 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 14 Mar 2012 20:13:24 -0700 (PDT) From: Will Drewry To: linux-kernel@vger.kernel.org Cc: linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com, netdev@vger.kernel.org, x86@kernel.org, arnd@arndb.de, davem@davemloft.net, hpa@zytor.com, mingo@redhat.com, oleg@redhat.com, peterz@infradead.org, rdunlap@xenotime.net, mcgrathr@chromium.org, tglx@linutronix.de, luto@mit.edu, eparis@redhat.com, serge.hallyn@canonical.com, djm@mindrot.org, scarybeasts@gmail.com, indan@nul.nu, pmoore@redhat.com, akpm@linux-foundation.org, corbet@lwn.net, eric.dumazet@gmail.com, markus@chromium.org, coreyb@linux.vnet.ibm.com, keescook@chromium.org, Will Drewry Subject: [PATCH v15 04/13] arch/x86: add syscall_get_arch to syscall.h Date: Wed, 14 Mar 2012 22:11:56 -0500 Message-Id: <1331781125-15658-5-git-send-email-wad@chromium.org> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1331781125-15658-1-git-send-email-wad@chromium.org> References: <1331781125-15658-1-git-send-email-wad@chromium.org> X-Gm-Message-State: ALoCoQl8nviD/8v0BbY8UIC/2RECh4lZdjAygtfD3MXARy9gogYhslsuaWPntJCJgvBNk6ePRjvZ Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add syscall_get_arch() to export the current AUDIT_ARCH_* based on system call entry path. Acked-by: Serge Hallyn Signed-off-by: Will Drewry v14: rebase/nochanges v13: rebase on to 88ebdda6159ffc15699f204c33feb3e431bf9bdc --- arch/x86/include/asm/syscall.h | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/arch/x86/include/asm/syscall.h b/arch/x86/include/asm/syscall.h index d962e56..1d713e4 100644 --- a/arch/x86/include/asm/syscall.h +++ b/arch/x86/include/asm/syscall.h @@ -13,6 +13,7 @@ #ifndef _ASM_X86_SYSCALL_H #define _ASM_X86_SYSCALL_H +#include #include #include #include /* For NR_syscalls */ @@ -87,6 +88,12 @@ static inline void syscall_set_arguments(struct task_struct *task, memcpy(®s->bx + i, args, n * sizeof(args[0])); } +static inline int syscall_get_arch(struct task_struct *task, + struct pt_regs *regs) +{ + return AUDIT_ARCH_I386; +} + #else /* CONFIG_X86_64 */ static inline void syscall_get_arguments(struct task_struct *task, @@ -211,6 +218,22 @@ static inline void syscall_set_arguments(struct task_struct *task, } } +static inline int syscall_get_arch(struct task_struct *task, + struct pt_regs *regs) +{ +#ifdef CONFIG_IA32_EMULATION + /* + * TS_COMPAT is set for 32-bit syscall entries and then + * remains set until we return to user mode. + * + * TIF_IA32 tasks should always have TS_COMPAT set at + * system call time. + */ + if (task_thread_info(task)->status & TS_COMPAT) + return AUDIT_ARCH_I386; +#endif + return AUDIT_ARCH_X86_64; +} #endif /* CONFIG_X86_32 */ #endif /* _ASM_X86_SYSCALL_H */