Message ID | 20241008-v5_user_cfi_series-v6-13-60d9fe073f37@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 111FCCF0429 for <linux-mm@archiver.kernel.org>; Tue, 8 Oct 2024 22:38:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DD3C96B00AA; Tue, 8 Oct 2024 18:38:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D837B6B00AB; Tue, 8 Oct 2024 18:38:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD3A26B00AC; Tue, 8 Oct 2024 18:38:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9DB886B00AA for <linux-mm@kvack.org>; Tue, 8 Oct 2024 18:38:27 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 086ABA0C84 for <linux-mm@kvack.org>; Tue, 8 Oct 2024 22:38:24 +0000 (UTC) X-FDA: 82651900254.21.776DE92 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by imf03.hostedemail.com (Postfix) with ESMTP id 222E220005 for <linux-mm@kvack.org>; Tue, 8 Oct 2024 22:38:24 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="1AR/wIqz"; spf=pass (imf03.hostedemail.com: domain of debug@rivosinc.com designates 209.85.215.170 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=1728426969; 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=I6L9CXOfGC8FGkDgNo32YOnEr2hJuvgG2CDkhLFheFM=; b=cEruvkNJCq/YP6ADkR0dC7+1BKcqx+VoM78LXCQhoY00KdFKOLWlx2z7QgL/TRd9Oy3xlm 5CPQqsRNEKGs0iXXTLy801ejmcyZCr7YP/McmP5+3onztVdN8P+vUCs+M+nHGYvvSnyrD3 9IxKUQfheSaLH3VYnafLf78kmuOeojc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728426969; a=rsa-sha256; cv=none; b=QmR+jyjYIp2hMspbdZ8Fa5za4mR53Qrs+YrQf9ApoSMRNbIZvahrMBKP90+l/lFI6uc4w9 oLvJXw3ewxZhPLR4kEsfGR79+kvFbIXrIQYqO9J29lAj6hr27nCzANgchY3hprgFMYzmCy GKu1sS5Ksmot6m0RS3Iqd1brrEWuLsc= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="1AR/wIqz"; spf=pass (imf03.hostedemail.com: domain of debug@rivosinc.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-7163489149eso5379070a12.1 for <linux-mm@kvack.org>; Tue, 08 Oct 2024 15:38:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1728427104; x=1729031904; 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=I6L9CXOfGC8FGkDgNo32YOnEr2hJuvgG2CDkhLFheFM=; b=1AR/wIqzYMzPtzFvPocwV7rCwkGKjh+SdBRINNOHkGiT0Mr9I5ju8SDTByPdt0zxZx vjniQOT5qWoFZa+NzoTm1Xmmmq48jJSe4hBhjrzYmAJQiSZXcJAQ3zupR6nEi8blhCk1 PNbEh6WKoVPGnLMGu2mwcyiWEUGKcMRU0DEdfqyAqxolknsG+1yavLFjEbna3oWwQdfD AO+hOpCj6DQY7VjkUFhIE34cQzeor5uKTb7YoHos9UJj/ZLK7jGHsNT2fzemfaZzDABV ZzdzuW+fA9M/+NiwW3DphD/mRa1t/6ITbCbMNBl7lceKwJ6OkHnIQVnvw9npYzCa+SUp eU/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728427104; x=1729031904; 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=I6L9CXOfGC8FGkDgNo32YOnEr2hJuvgG2CDkhLFheFM=; b=MDMUnBVDKD5n9Zu5Wc4ELdyPpmYJGWq6zvM2NKb8l6tdvmVjVrPqlzcG+j20NaHfR2 g9fDCY4CgjaVstAQSjRmgxlGGy483+8HIxfq9AxPEA/vNVKvtB0ri0It4/dyOaSRAQ2s l3T/wKjOk1Oia8u2QlU4Lm+hEz6dZR0Mc3yH6VjLYzFGGJ8tbEITH1x428AY1FAepiYD Cx7DwR0CJg0yQAx4NqED0pd1scvBWxSTPjqe+EHtniYjOCUlhXvlpraGhzOzmkjpPIQQ XTURN1j5nOs55Lgo9lNEdLa3WTUWJhGuNHWX8taHLr0mXnuIQQ60ptp3/HkLl60mV4Ec LFAQ== X-Forwarded-Encrypted: i=1; AJvYcCW9ryLYb0HHZb3KycEVTMLpBOplpplm7uOj2tX3hq8uv7foK2xXwWadKXRcgbQTLDf2IiLOcch9+Q==@kvack.org X-Gm-Message-State: AOJu0YxA9TMWQyh0A7UgGV5vkXaQOrFhUynr6XGdV+6t+iOK5mRugTBY 77JugExHduEwPv2EhajUTBcv84SF6B+ntP5g2p+k3T8aeDNlh2tXokbASh/lqhQ= X-Google-Smtp-Source: AGHT+IH2MMc22LEfeLpFr/+vzLpFm6wThOwZwpheAqw6wq1Vnq109QUbVNEO0CejcV+v5vQMgM/88g== X-Received: by 2002:a05:6a21:1192:b0:1d8:a3ab:720d with SMTP id adf61e73a8af0-1d8a3b5cafamr1049827637.0.1728427103894; Tue, 08 Oct 2024 15:38:23 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71df0ccc4b2sm6591270b3a.45.2024.10.08.15.38.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Oct 2024 15:38:23 -0700 (PDT) From: Deepak Gupta <debug@rivosinc.com> Date: Tue, 08 Oct 2024 15:36:55 -0700 Subject: [PATCH v6 13/33] 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: <20241008-v5_user_cfi_series-v6-13-60d9fe073f37@rivosinc.com> References: <20241008-v5_user_cfi_series-v6-0-60d9fe073f37@rivosinc.com> In-Reply-To: <20241008-v5_user_cfi_series-v6-0-60d9fe073f37@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> 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: rspam04 X-Rspamd-Queue-Id: 222E220005 X-Stat-Signature: sq8n4z63hdjkfjoow946tdnizb71744e X-HE-Tag: 1728427104-565795 X-HE-Meta: U2FsdGVkX1+yDetRpB7TeWr3heBcsPkz/KCu/X591wIYzH+SOvIGdyLmGxBI6IOY05VT8sJre5PE/6OzjJnY68RTdM+vXTmDBk/POXNJddVixUP4ywncbCQzx5qGeaN1SJqKzebJu27IJsSR9/7Md7nMD+GK3jkqm0kUcC4tCDMxJSvk6lTWRT1wyF32khgmq9hv3toTSwOQB10KVINoHu+F7Bozj45QCGGpk/YctCidShoPXLadcANzssOqsV2aKknj4lsRbBr3x0fvazZ77cZqfotqPTYzui2GK6Ifx5kqEy7uatvhFBN/yYrfw4PuW9n+ewXTowfaDhxUvwI+Y+USUSoMA/5sBoZWKElJpH+zKFgUwM2lu/Skp6WtM9TtWraskLwaxeH/UvURwBCzjlPgbvhyFpL84yQM80VHhU2/iFVnt4uiMnWZnjVjHY6Ydyl5lUs+4pVQnrSdvLbIo63ntroi8TU4QardBxvcpc48LH9zcXtA71KJ9zuiJ36MZzVaP/mvcxX0lOcK+aK6KgSDKRDGOCSVyKyHFVTL+lwzpw8jmjtv5NubxRwmgDXPLcWHKZKYCfO4L8IxmatFwo2yqNxZciYRYF7PFBTK5jvDj1juSZFGIGdSJxUU55WROhxbGi+nIQxfpfWQ5LF8w7SpS+UHQNWB64rdKAtLlpb8jnSU59yi89UwzxDQ9200aAqsMGGw6XHqgVOL95WJEfJDpjcSEpADregsc0ibKSAXWouIH4KD2zJAfdKRSI4kOPIo6h68HKmaMvq0+XcxdyKcAvqpKBENINxSfSMTHpIosdbBB//fiTSwyKEoS6LYJFLZM+Gqulj4DZQMCWSNbYHSbXOJF4hA/bTm+8CqpI9sI5vBq5fzoUNNdwPaFCg6gT6oXggoRqJb2MI168CYsLJqY8hbJE7LEbur2K9dtAUWK6YH+Sko1TLhVV3XiTw8bMfe++12yQz/4tZfGWD QjlY3QKp Jei3rcRoGvPnaNTk1QpoJx/+eMiVgRDlzepaejE9KjHz8Q5vqSMV1hoHuEjfoGCUS03aF1pdSgUqJvAd5EwaBAE+8bCEQLbMsxOx6vpv9pDIHQxDNl9sKJRF850iQIAmqpzk2Ju04ekgn/MEZgUMvHZrmHNUOFbaHlxioK3L+/Hk7T7o6IGh/WOqbWwGqaZ82sUxRTEfgtgTvoxPkO680vlfYZbr5d3TrYuTa+xtZO8/BoLKTD85js22kKoP3VL/WQCZqqxJpern8hQ1X90f68UNJS7FK4Ul3w3Ylp7jKuIf6vNGzUeizJkmt9hU95VGbtnIcDGZy5pOryj5DLxCa6I6maUeX0NZA492mWjUnbdKWB/w4NV026VZv3MyLpWCGtlmcLFmHejg4DvZhAKSOvZTHZvXjpfvj3aJIUQMY8oHNuEj+AJI8C6bLZI6oj3yf/4GuEHfSv5aY7WDo4LkQhoSW45uDh8IGx0/iCBC2Ep1UzbsaKji4XtwjrLtByMXB0Xzwp0EjHftHGR+1PX1V40e2zFpldEz7NYfRjWlzYs0b3gTwOGzgR/nQNSxTs0so0a66HQq5w6Nms/WngHIBAJLY96zCK8FEiGGaXxasS5iYEmHqgzc47fGOfA== 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 2c6edc8d04a3..7963ab11d924 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); @@ -738,6 +742,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); +} +