Message ID | 20250210-v5_user_cfi_series-v10-8-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 DB099C0219E for <linux-mm@archiver.kernel.org>; Mon, 10 Feb 2025 20:28:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E696B280030; Mon, 10 Feb 2025 15:28:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DF0B728002C; Mon, 10 Feb 2025 15:28:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BF592280030; Mon, 10 Feb 2025 15:28:11 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 914A828002C for <linux-mm@kvack.org>; Mon, 10 Feb 2025 15:28:11 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E4D961A05E1 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 20:27:04 +0000 (UTC) X-FDA: 83105169210.15.71D08C2 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf05.hostedemail.com (Postfix) with ESMTP id 057E0100018 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 20:27:02 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="0iyf2/5b"; dmarc=none; spf=pass (imf05.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739219223; a=rsa-sha256; cv=none; b=evamSBwqQHXpFIskS8iIvoym5a0eclJW8WlxU5rT7kh1+vHXawKuZNnyyLM3ta/LOunOul KM8s1oBXODviQJjbMfGZGoB+NkWUwvOsFWXjhCqalAwhOcNvenHaWHzqEHGDP2yAsHy3Po YBFRJRfXvr6LZbnun4QyKUYCGsImFQs= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="0iyf2/5b"; dmarc=none; spf=pass (imf05.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739219223; 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=WPde6NcIQ47rHbegQG8dPMP+orPth983zEAPX8ktkAY=; b=DeO0low8YkA80T5YPc50l5FgrodMqR2ovHqJwD5zawG6yc/mjUZSplzmXEFvwUuKTcKMCU jB6bUyowef3mAqRFTDIKRGdr7D8Qb9BMCw62GQrO393DRDeGFAKJNc/OlagRBMxCHuzQ2w xkIGRjOaAhsYXeSURQutJ2A29VgNkxY= Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-21f5a224544so37852405ad.0 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 12:27:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739219222; x=1739824022; 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=WPde6NcIQ47rHbegQG8dPMP+orPth983zEAPX8ktkAY=; b=0iyf2/5bXKfdcqZ4tP8SBhKTybCfuxMKRp4q9UygBEdzvLIibKICVgeQgaKWXkbv7b Q2Px19qZSzCDKyfIMWCArAYS6k04dNFzm0WTYseHXLuZO2kyWrxFvwLnYMs8Jcoey6p4 Pv2xECPuJ3yEY040Usk69LJjk7HKLxwQUQDemSxPtV2svnMaXnM8juGM2MJ4v3RbOw6Z tUS2DMxZQluNB8FPeS7X+YQ0TbxUMMde4eJWE43g3p2If+9p79ir/lCsLSaFUTu0lsB0 xEaVP+HLCVarLvyAmgUJeB44XjKMNivRYZB2/cZsCwW03BwGSrMHpTnPnXpPRPWPhIt1 X6Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739219222; x=1739824022; 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=WPde6NcIQ47rHbegQG8dPMP+orPth983zEAPX8ktkAY=; b=I/U/Y8eYq62D33PBEJWFFl7x/3LaOHk6CqVG0AzYN1W1gYdVzBWvpP10kjqP+at19D V4elUYizqFCw6rMwXsqh/vGnUbiDuoTZO+WymsGb9lTMxRYPLn/qxo6MI1kNZYjoEgKK sHuolyefBJwgPrKTpjupp1PfbbFhz4+mKHmYs/dDAGUdvJdMBVy4LgN4XmjAcGSyI8oX DIjjfY5MxT+xV1iBW8iLWd5H/krzkfgG5C1iMNbq9rGoprXBB8d4LEqE1bTgHqToUq5d EcBEdSdQgcsDIyC+OaF1mSb8bj+4i2distSs9LPbxItm2kHpSPPCr+vlxVgM11ZJ9wEF 5I6A== X-Forwarded-Encrypted: i=1; AJvYcCU92ocSuO3HhZ1+sM25lBiL7Hj4rF49Y6pK2422Z381wG6ySYE29gh/D87yRMvtIhLlwgmSmWGToA==@kvack.org X-Gm-Message-State: AOJu0YwdmcF/ulEqUpeOwTw+ip38g1l6lVs2T9MIqw/eZhBiyrsEZhGV A8S+d9yehgu+4hpKRj7IpMFggqOfjLJTFRspion+ixxC9asAiz3wLZg4ihQpmZU= X-Gm-Gg: ASbGncsB2qJu98R284ZNSXtYu4Z1bqEgabm0ZtORyBBuk5UiwQ2qok6610j6Pp8ZQpw 3z7D7UtKOAF1w+w7tOWpXvWFaz0HHgwF8gl0unkThrIweSGUQ5bAAT6vbCaBuzbXNtN9GlH6O0P f9BTX5FTn4D3tC8EU2KjEFcn+mOqJTgeZ2XZ58FMoEFGR0Eq3WNls2VVyNOF3m98PAoiT82oXML i0XI1yqwcMzAf7oZo2+PR4Poqg0/K/hwBoiRMmM++p4MaaGFmumjO2ZRvZOr3QQsenymAHj+U2u i/Pap1cRvQMdGyKSk2kzqb+9gw== X-Google-Smtp-Source: AGHT+IGkck8QMdE2zF0rHgCttuOewb5gUafKkLZkDOmgM8iUcqpClnt2HEbL9+VvYLlypifzjE6CDA== X-Received: by 2002:a17:902:f687:b0:21f:4479:a34d with SMTP id d9443c01a7336-21f4e6bf3f3mr236952035ad.12.1739219221922; Mon, 10 Feb 2025 12:27:01 -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.26.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 12:27:01 -0800 (PST) From: Deepak Gupta <debug@rivosinc.com> Date: Mon, 10 Feb 2025 12:26:41 -0800 Subject: [PATCH v10 08/27] riscv mmu: teach pte_mkwrite to manufacture shadow stack PTEs MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250210-v5_user_cfi_series-v10-8-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-Queue-Id: 057E0100018 X-Rspamd-Server: rspam12 X-Stat-Signature: j1rn36kzmmuuq919efikezwrs91ghaaf X-HE-Tag: 1739219222-538399 X-HE-Meta: U2FsdGVkX19gySw7t2FHbHh1XUe9FZGRzlhu9wMMONtbSEuWXDY42aY+kpAZJUjB/4S1PB/RXXOZi5/5trzJqLcMTieGOuNkQJsCC2+jCSSPeMhqd13rEu2BczfX8Q/F1LzEIC4lUMiQlVwQG/PuL77iA5hVnyHFH/s60YcIN1ne72ZM7+t81/uAImrWaRKzuUMO3DYiz92xj67cvBa/CYAZGKfsjHMkRaVM18ESYDAbmFKkPglK1MFQFyrS+QVm5I7LRdRReWhoFFION6sixlpFncVUOrI8IjNVQPKPkMRMno+hR6PEGKIKCBAxG3lOJa38YWXD7HiGHOaMNroH7qh7V+23KVVrAa+BNBUdqI9jokb82EHhZNFwfaOxZbR4TjT1oU3js64nVbWGEtCTqY/5qGhKbfT4L/Bp4YGnqxdXUjRsUz1wayTGRDOqKK31Zf7nUmpQgHAManqyiuSdYZ59ljJlM5mPTmmNB0cytJ6URG/duO7VS6FaMnH4dsAc4XE820UghkedJnD8rw0c7weie26byz4FXyYRUoWBzLRSNdmBIpbJRhZqpCwmxmWd4x9bAPI9YwlV10xL9ukvmPU68iWoPzVCCjfp1HSYH+QBVquz4D7AgGM6wBFS5457ivU+2eG9Z/FtLjlS2Q7AEsX1+AIfYN6VMhkzf0+oDLw269Qs+HODLsgaWKEogH8O2JbiiE/bs3tn5gsXvWB8DS0tPDOpWmsHR9Cn9WBeYTtfP1sntcnvdKPnJdjb46GnTn44nwYdL7csW5wZrizw6lmpZ+Q285ZngT2zR//5qE756zfidC96rss5+uum8Eeg6XMeDJvepw42KFZD+rPyVWBalpUGaVg/Im5g0Vx+nPKMDAPr52DwgZZw45enG56ewAP0A+mLfPOF8QvPTpqfBi4mGFPsgtZcCoj1kxcCDxgBgB4NMZOKXvgedl2/GeGDSqRfKBOQJFj1z3i/U23 zfAG/P/Y I3HbhInKcFxy80MMUUbGhYgLgQ/E6kUYHJMEPbvB4b1Yix4mwkIAlT/3KLA28+0iv66K9KUbIjV5lFTv/owz0umI0qlL5uU9ANOhBYjqQtx0URXY/23TTZiYTo/iesPCLTMC8fOj0PYmIXhcFHYKl29c00rlwS3A8xtCClMQUj1fBEWCTp+JTTDSW3gFoe3hNDadv0cRy6hYuN1kQrsmHnMG3Xv3iVnAxHpFIvj/ujp6JRAh7Q9xGC7lTXfJ0uvIcMWGOfdUcATgW0igrRnTrA+SdiqglzvTcH8Zvky/knQymEZnuZZVgIGB19i+SsDFiuAqAcGzABIgF3e9oUhcgwx5evRuAOBVPlxDpE0vqUdCBag9D5tnIT0ItKkb+s4b1HY4KkrcDlYsOdfmWD9MMAtuoeIjuV6Yubpwnmuuvjxnh5QODLCJT5FYK2G3LCNYzZWUoBOne+uytu96Knk0Csy9Ql9i3doCxyVm+vjEDJrbx0TVUW2sUbpODbVXQvVf/zp7k 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/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index ede43185ffdf..ccd2fa34afb8 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -416,6 +416,10 @@ static inline pte_t pte_wrprotect(pte_t pte) /* static inline pte_t pte_mkread(pte_t pte) */ +struct vm_area_struct; +pte_t pte_mkwrite(pte_t pte, struct vm_area_struct *vma); +#define pte_mkwrite pte_mkwrite + static inline pte_t pte_mkwrite_novma(pte_t pte) { return __pte(pte_val(pte) | _PAGE_WRITE); @@ -749,6 +753,9 @@ static inline pmd_t pmd_mkyoung(pmd_t pmd) return pte_pmd(pte_mkyoung(pmd_pte(pmd))); } +pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma); +#define pmd_mkwrite pmd_mkwrite + static inline pmd_t pmd_mkwrite_novma(pmd_t pmd) { return pte_pmd(pte_mkwrite_novma(pmd_pte(pmd))); diff --git a/arch/riscv/mm/pgtable.c b/arch/riscv/mm/pgtable.c index 4ae67324f992..be5d38546bb3 100644 --- a/arch/riscv/mm/pgtable.c +++ b/arch/riscv/mm/pgtable.c @@ -155,3 +155,20 @@ pmd_t pmdp_collapse_flush(struct vm_area_struct *vma, return pmd; } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ + +pte_t pte_mkwrite(pte_t pte, struct vm_area_struct *vma) +{ + if (vma->vm_flags & VM_SHADOW_STACK) + return pte_mkwrite_shstk(pte); + + return pte_mkwrite_novma(pte); +} + +pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma) +{ + if (vma->vm_flags & VM_SHADOW_STACK) + return pmd_mkwrite_shstk(pmd); + + return pmd_mkwrite_novma(pmd); +} +