Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp921051yba; Fri, 3 May 2019 12:43:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqy+FIjnkP5iHp6DKbyoyGK4NKned6tOFVywtO15h2ja63YFBbcbHMR9wAeCB/SKEq72Enin X-Received: by 2002:a63:b1d:: with SMTP id 29mr12869297pgl.103.1556912598657; Fri, 03 May 2019 12:43:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556912598; cv=none; d=google.com; s=arc-20160816; b=rTCRnyW4uCtu9BfvQhHA/hh5uqrGjOAqZ6JMtrpZS+M+AbHoR/2HzbP7+6k9L0LJXt Hc+dasz8e4TDGczVwDe8q9kb8RbL3ZKffTnpBIWvbwmPpJAQLNFUGi3sQiheAmdloHdj J9x/IKyI7VOvTBPC/7TAAUxQKy6UhX/bPrFgGPEfLUOMEjtFOvvFNtyrfyzx3iSOz/cW myRKvkvf6VRVCGSG4udP4akJywd3/99K/PTBbz9++HHxYcdRd1V7o6g6zjBg8QSahd1K Uod3pEHRD8uCVSeg5cN/frzoekF/80AeTvab899jVtFhmvyMrSZ4tyYmrjPfeQlp9c25 N9gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:references :mime-version:message-id:in-reply-to:date:dkim-signature; bh=EcPHLwy0dCi679PF7uGrTMs+xhbUxRGLn32SYROJYvw=; b=WgXtatjKud0DXdFZmvPT+lC3Fj/Dpb8CnGGa6T3/p70B5Fh/5jNNpI5ot7zpioDUXq PiKRV1Jznoh1undtcmO4Z5spX0jv255/WClzeDWhvlnWHKv2lt8VVyT4xVps814f+k/c DLVXC6/BC8Riz+3/IksyK6KdogmcbPhYN7r1vJE1IbXEhpCyrR2KBmBsL5j3C6RW1540 9F5mAxB2UqkPwhNy9daQmUaG3ujjJBfgIZ1oQLImGdpJZpXMQFoq+UZjO1z9m8JmBHZe tgm+jMdPQMLjt4uJZcT6vYouF1LS6osmjjsn3JIOvyvUaBWZ/rRqS9Y/5nbu+74+EdLo 85og== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=YLFHAU8Y; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t2si3372371pgp.473.2019.05.03.12.43.03; Fri, 03 May 2019 12:43:18 -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=@google.com header.s=20161025 header.b=YLFHAU8Y; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727130AbfECTMk (ORCPT + 99 others); Fri, 3 May 2019 15:12:40 -0400 Received: from mail-vs1-f74.google.com ([209.85.217.74]:51732 "EHLO mail-vs1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727105AbfECTMh (ORCPT ); Fri, 3 May 2019 15:12:37 -0400 Received: by mail-vs1-f74.google.com with SMTP id g67so1564897vsd.18 for ; Fri, 03 May 2019 12:12:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=EcPHLwy0dCi679PF7uGrTMs+xhbUxRGLn32SYROJYvw=; b=YLFHAU8YrQv2L3qLUIRIUFaA//HQ2PTUT2tQAQ3bVB5YXHf3sPtdpPJ3AzmtBzMA20 pl7TJ+wPrFjZN+K0uBhTzkBD8Vqk6Qjh4SgIcmYfdq3zDUrO5lk6zxLHB4SXdw5EEZpL 3kI7Wh8e2tzg3/hkf5RzXYRjF5PJqtnwYSEvJYv66eYq8nJC4K9CbQp4wyPrsBEB8cxm NfNOmDgcFsb44qlE/L+7rGdc4ipvtVM/GabjMDgb8WAk/GJTauCtt4k2JZgka4TxcKJK QFD8EthWTMFSTJV4ZCZRDD2nuLtLeblnp5Q0wFfDFnw6mmrLJ+SkorKuCJwF6D5t2TOZ GH4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=EcPHLwy0dCi679PF7uGrTMs+xhbUxRGLn32SYROJYvw=; b=KxnygWADhQ3cAtYP0oCK/Udt+Wgm6SfU+s5T64WeFhQkvDggFk3IHlaPzOZX3/9vX8 7djxwAZ+iBa4Uuy1Iyd1b4oHRZmOlwqfBIHCMGollBxMkskql+Jf9vrGn3BgoOMqnIC5 /hLxASEmgw8Rpug6uiKjZF4j+LJDuBSkeIemwtqcpgp0lw+uRyEXEGVIqhYW9baCfDw3 1qNMuHWUD2lmIDFUcynmJiul/i8OZpkWJLknD1r6rYauksTVtIctUi4kXtoxS/5Ss99w mkklB3gsXefce+9du6f5fvLUod3WsU8ZO2g841iMIWEerB/gw/gTre9M+IlafoRcMf9w hedA== X-Gm-Message-State: APjAAAVuC/fn8HxYsIVHkksQyF+f+zGGov05OP4xXRFgrhybxCv4OCWT bti1cuoMZe64bBVSEI3rCK0C0j1xqKwUPMx4Ao0= X-Received: by 2002:a67:7b56:: with SMTP id w83mr6710305vsc.79.1556910756261; Fri, 03 May 2019 12:12:36 -0700 (PDT) Date: Fri, 3 May 2019 12:12:25 -0700 In-Reply-To: <20190503191225.6684-1-samitolvanen@google.com> Message-Id: <20190503191225.6684-4-samitolvanen@google.com> Mime-Version: 1.0 References: <20190503191225.6684-1-samitolvanen@google.com> X-Mailer: git-send-email 2.21.0.1020.gf2820cf01a-goog Subject: [PATCH v2 3/3] arm64: use the correct function type for __arm64_sys_ni_syscall From: Sami Tolvanen To: Catalin Marinas , Will Deacon , Mark Rutland Cc: Kees Cook , Nick Desaulniers , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Sami Tolvanen Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Calling sys_ni_syscall through a syscall_fn_t pointer trips indirect call Control-Flow Integrity checking due to a function type mismatch. Use SYSCALL_DEFINE0 for __arm64_sys_ni_syscall instead and remove the now unnecessary casts. Signed-off-by: Sami Tolvanen --- arch/arm64/kernel/sys.c | 14 +++++++++----- arch/arm64/kernel/sys32.c | 12 ++++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/arch/arm64/kernel/sys.c b/arch/arm64/kernel/sys.c index b44065fb16160..4f8e8a7237a85 100644 --- a/arch/arm64/kernel/sys.c +++ b/arch/arm64/kernel/sys.c @@ -47,22 +47,26 @@ SYSCALL_DEFINE1(arm64_personality, unsigned int, personality) return ksys_personality(personality); } +asmlinkage long sys_ni_syscall(void); + +SYSCALL_DEFINE0(ni_syscall) +{ + return sys_ni_syscall(); +} + /* * Wrappers to pass the pt_regs argument. */ #define sys_personality sys_arm64_personality -asmlinkage long sys_ni_syscall(const struct pt_regs *); -#define __arm64_sys_ni_syscall sys_ni_syscall - #undef __SYSCALL #define __SYSCALL(nr, sym) asmlinkage long __arm64_##sym(const struct pt_regs *); #include #undef __SYSCALL -#define __SYSCALL(nr, sym) [nr] = (syscall_fn_t)__arm64_##sym, +#define __SYSCALL(nr, sym) [nr] = __arm64_##sym, const syscall_fn_t sys_call_table[__NR_syscalls] = { - [0 ... __NR_syscalls - 1] = (syscall_fn_t)sys_ni_syscall, + [0 ... __NR_syscalls - 1] = __arm64_sys_ni_syscall, #include }; diff --git a/arch/arm64/kernel/sys32.c b/arch/arm64/kernel/sys32.c index 0f8bcb7de7008..f8f6c26cfd326 100644 --- a/arch/arm64/kernel/sys32.c +++ b/arch/arm64/kernel/sys32.c @@ -133,17 +133,21 @@ COMPAT_SYSCALL_DEFINE6(aarch32_fallocate, int, fd, int, mode, return ksys_fallocate(fd, mode, arg_u64(offset), arg_u64(len)); } -asmlinkage long sys_ni_syscall(const struct pt_regs *); -#define __arm64_sys_ni_syscall sys_ni_syscall +asmlinkage long sys_ni_syscall(void); + +COMPAT_SYSCALL_DEFINE0(ni_syscall) +{ + return sys_ni_syscall(); +} #undef __SYSCALL #define __SYSCALL(nr, sym) asmlinkage long __arm64_##sym(const struct pt_regs *); #include #undef __SYSCALL -#define __SYSCALL(nr, sym) [nr] = (syscall_fn_t)__arm64_##sym, +#define __SYSCALL(nr, sym) [nr] = __arm64_##sym, const syscall_fn_t compat_sys_call_table[__NR_compat_syscalls] = { - [0 ... __NR_compat_syscalls - 1] = (syscall_fn_t)sys_ni_syscall, + [0 ... __NR_compat_syscalls - 1] = __arm64_sys_ni_syscall, #include }; -- 2.21.0.1020.gf2820cf01a-goog