Message ID | 20250210-v5_user_cfi_series-v10-21-163dcfa31c60@rivosinc.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96AC2C0219E for <linux-mm@archiver.kernel.org>; Mon, 10 Feb 2025 20:28:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 25B8228002D; Mon, 10 Feb 2025 15:28:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 20B6D28002C; Mon, 10 Feb 2025 15:28:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 06A4C28002D; Mon, 10 Feb 2025 15:28:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D3A6928002C for <linux-mm@kvack.org>; Mon, 10 Feb 2025 15:28:05 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 757C91A0724 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 20:27:37 +0000 (UTC) X-FDA: 83105170596.03.221FF27 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by imf06.hostedemail.com (Postfix) with ESMTP id 852BC180012 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 20:27:35 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=MA8ZIewg; spf=pass (imf06.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.169 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739219255; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YHkNmM6XuphgUqeYDdwRc1f9MaOV9mSfy6OUDBv2dEo=; b=ebZibOKjQYdoLFN2xE+1C7mUZh3rXl0smlUtD+PGMxu8Hy7l/oL1QOXEK/Qi8tY9fwdyD/ 9K5Cq5mT1tGq74j2VYjZg4aWpYNgHZT5WK7rxVicepZFm56rvTBhDFchsDpqQKFVG0G9IU IIDHt0Ugi+MG1XKPMC/GjElbtJniqec= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=MA8ZIewg; spf=pass (imf06.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.169 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739219255; a=rsa-sha256; cv=none; b=Ef4GYsJRE3V8R9PTT8y/qd/eFwbS1ZZsLhS1nSfsetaNeqVGX8hAgMDopcx+7mgmS6m2NU utuK+1nX+E5OhIC86fRovn7RjC4ZGhuh+NkIxkq3PgpG9BgUcOveMUbbG677LniiMrW3aZ KzpY5527mT/L+diBn5Rba3xNrv5dwjs= Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-21f48ab13d5so77669065ad.0 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 12:27:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739219254; x=1739824054; darn=kvack.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YHkNmM6XuphgUqeYDdwRc1f9MaOV9mSfy6OUDBv2dEo=; b=MA8ZIewgDTej+3WBA2JFLbN7qlY4tlAyTAFZ8Khm2lXvGSeOU62nLVcyAW4x5nLqd/ P3jw2kbo9KA3qSlpYJU7kACw7ewdNDJlwPmoWJAtBdYtAZDGSiSJ6uxl/1HJKYYHI9Ta xcx1g+jW/AwCcIf8HT+W1Y0Hr1djfMPQtKKhe8UsC1g7tcWF/Um/n4iiuMLe2jambuo3 WAVp0GYaO6isyCzt+ApRYrHM5IL1m2eBi7ZGMxVMkjjHahouo6cUO+j4uju29nR0kXx/ a1Yht3XZlIEIXBC54Jz1FarFt5ixIimMciLkVzKTOsAm+rFBBEFj9rcd4JNbAj25FwR6 Aw0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739219254; x=1739824054; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YHkNmM6XuphgUqeYDdwRc1f9MaOV9mSfy6OUDBv2dEo=; b=ibqBSlJtxXODs7l2KBNJ7M7x5v+/1cZrj6D79CF0u8wF9/kLLda+LGNVM+1CKEIBiJ k5SNxNED8T20FVkX+nq7NoGreK4eA9OC7QQiKiohOSMCLUWw9rZFO7TPOGbgoHI5rSl/ bJE2ZNOPFVCeQFXFaNyDQ48WURevo62sLDPgRRBu0kpXZP4Ipq62lvVWgBRlm39ZF9W/ Jl1eYTd5OQDUlpCHOYy0xI4z6zc0k4oFHCaHKSq12rbmLAqAGXgi2yr9HbrFW9z8OUXg 81CR5eOwAbpzXv2x0/1mfGEQN/eLN2k2H9ru61wj9gQjo90y/+NmkW+/JWhfkN2AT5jt 89Yg== X-Forwarded-Encrypted: i=1; AJvYcCW5DbYemRiN5Bm70eT5rKkWO9WuitBZCWhLV8axZnfDQKFUcxjgFgbiaLtXelkElcfpc69HcJwvrA==@kvack.org X-Gm-Message-State: AOJu0YyLmkqR8w6jEjHw6QYWc54PtyfxrQ39XKKfFGgiM8mESs/aqqQ2 FQl2qKPuFjJ2bMOke1iZ08vehGHsUd2bJBe3+ZcGqOxHhq5K5Fvmql6zFMcuM8k= X-Gm-Gg: ASbGncu0lQCQvBYVoFHGSx5jYgtlExXFujQ0lKwfOBianq+nqaUkIx91hC/uABFRpiu hNCRwuJf1dR2Svv9Y9Z/kPMGs2f76dwUsErcuBkj1Vrummy4jqtWs3zs/tmfFry9i6YQEMXz6Mr 9kZbryW9Kg1NRUlcV/HEhUVtc+Gaua2+r38/FR9ePqs1trABAXJHd/ovMyEk+eivYn+qxXwjwJA miMYsLh+4ABg7LZLkgVxNIJVIckYQoGOTug8V0qyJHFKSc5LWxEN+F00FPc1zj+nGR2OVCJHSQO LB+7YylNnYZ2tPdsvLjIpeFHFQ== X-Google-Smtp-Source: AGHT+IFdaxFBkgdagf7y3zqU2s2u/Xx2zJIy3i8Z2j6IzHAvWKa52jNah2tWLGP7hmgNkKb4ANZukA== X-Received: by 2002:a17:903:230e:b0:21f:7671:a45f with SMTP id d9443c01a7336-21f7671a6c6mr168719375ad.28.1739219254463; Mon, 10 Feb 2025 12:27:34 -0800 (PST) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3687c187sm83711555ad.168.2025.02.10.12.27.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 12:27:34 -0800 (PST) From: Deepak Gupta <debug@rivosinc.com> Date: Mon, 10 Feb 2025 12:26:54 -0800 Subject: [PATCH v10 21/27] riscv: enable kernel access to shadow stack memory via FWFT sbi call MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250210-v5_user_cfi_series-v10-21-163dcfa31c60@rivosinc.com> References: <20250210-v5_user_cfi_series-v10-0-163dcfa31c60@rivosinc.com> In-Reply-To: <20250210-v5_user_cfi_series-v10-0-163dcfa31c60@rivosinc.com> To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, Andrew Morton <akpm@linux-foundation.org>, "Liam R. Howlett" <Liam.Howlett@oracle.com>, Vlastimil Babka <vbabka@suse.cz>, Lorenzo Stoakes <lorenzo.stoakes@oracle.com>, Paul Walmsley <paul.walmsley@sifive.com>, Palmer Dabbelt <palmer@dabbelt.com>, Albert Ou <aou@eecs.berkeley.edu>, Conor Dooley <conor@kernel.org>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Christian Brauner <brauner@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Oleg Nesterov <oleg@redhat.com>, Eric Biederman <ebiederm@xmission.com>, Kees Cook <kees@kernel.org>, Jonathan Corbet <corbet@lwn.net>, Shuah Khan <shuah@kernel.org>, Jann Horn <jannh@google.com>, Conor Dooley <conor+dt@kernel.org> Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, alistair.francis@wdc.com, richard.henderson@linaro.org, jim.shu@sifive.com, andybnac@gmail.com, kito.cheng@sifive.com, charlie@rivosinc.com, atishp@rivosinc.com, evan@rivosinc.com, cleger@rivosinc.com, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com, Deepak Gupta <debug@rivosinc.com> X-Mailer: b4 0.14.0 X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 852BC180012 X-Stat-Signature: ror79fcsx8814bwonsrded15doo4qybn X-HE-Tag: 1739219255-541916 X-HE-Meta: U2FsdGVkX19UH9ZIdBhYqpflybpoR7DkpoGq/n7f2oK0ALqDfKN3JefxMrgLEjaSbG2JOBtjhVA+1i88oDb/4hGeG9KyAKAUBpO0fLsb3I5aADMdkqYXSkgK5WO06NLKzEkDZYAbNXA4YBwYsuSLHI+mg9tdQpYWadImQ8+vrNZqUR23suL2dhzh4GQ6GxZsoN/utMSNn1kREk13RHNxWv5NQHBBXt4nJOAkleOSvcy8fSsK0dsH2saa9l5pQTTrxy5Yli/j3JGKOXZ2Sc3eFIND2zVmQwRwca7a+hU+9LPnH9bjhUxPPSG2JsKLDIXwgSTCpoZ/ULIXndCfOuuV+NXjW3/6wQSlMShnaXL1qCmWbVYKOFwq7XdNRaj/QR4e4s+UTqghNVqPrPgUbCMf7kS8ilS9Y3rpseHMQR5wn14Zqg2CSEM1u9CI/vTmynuwqMC3Wpg1VY4xmllgR0EbyAXxbFlSpElKDr+J2ibWBop5ElBm63aKpGeseS4tH0VWRerXiNPIi7ZBn52H/rYJFzzqSIe5OxGpEtZL/OhIObk/v8NfcIUTcqHqW5hdXvkNfusXNBm6r1rvmNsD0wPdyB+LmfPhmRqBXRwUwAP5h+T9X+jxhyFjniAWhtCrLnwvw792U5786qp/Hlk0BwfsgprnEy7D0qp7IjGCiAsEAe/XGF9WootYFyW+aFmyBnqWve0U4qTO9m9d4BJt21cVIDdstNTVuKOQO9pr5xkjDby5ZAUumwt1rAdBVrFfKuD/KTPag95ocnn1xCT4U/C/bwVmaFf9vse+eq98gTfYw/PSBP9drBIA5qhOdtfSs6ivpaMH9tV4qnW+8UU5/FaFaWokjZ+eWfDpdLqhro/bL4XW5ufb1j+BeJOtDhzrAj5QYF41st91LDBi+gpw72FDFG2786MpIbwwQ+5SURyazg864cNVMdFzW6gWZKLUq8OeOZXt8IYe8dlF5a7NOzf MRT4Fgjx 76hDMhAP2oI9AiwGNygdC47Akc/A/zYB9dj+5xT08raJoJthNNp/voA5jRvALfupZgeOu8ekNI13Sb0c7yeUIS7SJV7bXgIElNRtDUUpnQWOeak/5jgT0CASqcw7/wYfz5AVl1rEWMbiO9dycmToOmxvcPZa2KuANCsJ8pCsubcZyZdnA5v9qKotxx4ZG09nWx2NP6eyeRSEFuXPw/iXwNiyRaRwbApiNpBJAbG8cqYudUhyhkzT64A+X1z1rBMr7p6rKlKDDCncnUayFJWXNiVm94Qacfg8tAxd3cxuicsM204UH8vJzTPZiToTqc8hfvpm7gpF2KxD1tuq6VZNQgw5UGMLwUFOgYweYXxNYYgTsJAVpgZ9TXnLH7MZnjRZxSTFYzmqBq41Ze8GHieBg5JoMULdVX2uq6LO4OkROKfHatw3S6wlKCTFAC6OVdu3Yd0vjFvlo2C4nmm96tzap0i+O6w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
riscv control-flow integrity for usermode
|
expand
|
diff --git a/arch/riscv/kernel/asm-offsets.c b/arch/riscv/kernel/asm-offsets.c index 0c188aaf3925..21f99d5757b6 100644 --- a/arch/riscv/kernel/asm-offsets.c +++ b/arch/riscv/kernel/asm-offsets.c @@ -515,4 +515,8 @@ void asm_offsets(void) DEFINE(FREGS_A6, offsetof(struct __arch_ftrace_regs, a6)); DEFINE(FREGS_A7, offsetof(struct __arch_ftrace_regs, a7)); #endif + DEFINE(SBI_EXT_FWFT, SBI_EXT_FWFT); + DEFINE(SBI_EXT_FWFT_SET, SBI_EXT_FWFT_SET); + DEFINE(SBI_FWFT_SHADOW_STACK, SBI_FWFT_SHADOW_STACK); + DEFINE(SBI_FWFT_SET_FLAG_LOCK, SBI_FWFT_SET_FLAG_LOCK); } diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 356d5397b2a2..6244408ca917 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -164,6 +164,12 @@ secondary_start_sbi: call relocate_enable_mmu #endif call .Lsetup_trap_vector + li a7, SBI_EXT_FWFT + li a6, SBI_EXT_FWFT_SET + li a0, SBI_FWFT_SHADOW_STACK + li a1, 1 /* enable supervisor to access shadow stack access */ + li a2, SBI_FWFT_SET_FLAG_LOCK + ecall scs_load_current call smp_callin #endif /* CONFIG_SMP */ @@ -320,6 +326,12 @@ SYM_CODE_START(_start_kernel) la tp, init_task la sp, init_thread_union + THREAD_SIZE addi sp, sp, -PT_SIZE_ON_STACK + li a7, SBI_EXT_FWFT + li a6, SBI_EXT_FWFT_SET + li a0, SBI_FWFT_SHADOW_STACK + li a1, 1 /* enable supervisor to access shadow stack access */ + li a2, SBI_FWFT_SET_FLAG_LOCK + ecall scs_load_current #ifdef CONFIG_KASAN
Kernel will have to perform shadow stack operations on user shadow stack. Like during signal delivery and sigreturn, shadow stack token must be created and validated respectively. Thus shadow stack access for kernel must be enabled. In future when kernel shadow stacks are enabled for linux kernel, it must be enabled as early as possible for better coverage and prevent imbalance between regular stack and shadow stack. After `relocate_enable_mmu` has been done, this is as early as possible it can enabled. Signed-off-by: Deepak Gupta <debug@rivosinc.com> --- arch/riscv/kernel/asm-offsets.c | 4 ++++ arch/riscv/kernel/head.S | 12 ++++++++++++ 2 files changed, 16 insertions(+)