From patchwork Wed Apr 3 23:34:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 13616775 Return-Path: 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 B7FFECD1288 for ; Wed, 3 Apr 2024 23:42:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6C41F6B00AB; Wed, 3 Apr 2024 19:42:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6738D6B00AC; Wed, 3 Apr 2024 19:42:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 477E56B00AD; Wed, 3 Apr 2024 19:42:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 28C3B6B00AB for ; Wed, 3 Apr 2024 19:42:02 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id F2B321205DF for ; Wed, 3 Apr 2024 23:42:01 +0000 (UTC) X-FDA: 81969846042.09.FDC70DF Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf27.hostedemail.com (Postfix) with ESMTP id 4159640008 for ; Wed, 3 Apr 2024 23:42:00 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=L3VwW358; dmarc=none; spf=pass (imf27.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.179 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=1712187720; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=w1ajd+NFF25bzcoUpj6TOVq3gYUXEAPUF2iej3ctG8E=; b=UedSpkjPZERpvMedykq6buX1juwVXHZ9WNliDzoXMOa5CqRpqIxf5OAaDM3v0+f+xJ1CDu ynr3rupQEnw8EsabX32kEvEZsdBQ5MyXf8W117KDspuiR/v+8h6l1KGi/oJ9czkCnsvRRg GL7qT0Xm9q5v3H9PbzKwpykNLGAepbA= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=L3VwW358; dmarc=none; spf=pass (imf27.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712187720; a=rsa-sha256; cv=none; b=4CQdKXOHrEsgDYR7APwlWwSmI+kz2O2hP3yYYFnOhuNHJ5wIAPxZpZjERzQj+1/DxCURGW WrLlZxhHZ609X1hfclWpiC3r1Xs1X9lm52wXObd7wxg+7cJEnFE9+v6s1LnlBiocp2N+H8 Ui7Mf5+HHEWEa24WqeKaHHy1GSMw6eI= Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-1e0d82d441bso3505585ad.3 for ; Wed, 03 Apr 2024 16:42:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712187719; x=1712792519; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=w1ajd+NFF25bzcoUpj6TOVq3gYUXEAPUF2iej3ctG8E=; b=L3VwW358XQqzhQkaYAuCM/cbpQEaam4C75vpZB/qHgKXgz3K3jEWCHPYFhgCDG6d7G 9edIsXE0VvF27rJOYmZbbujBRJolPWfXfkTukMxGbMopA3wgy6yNnb6nQs53wy8Rh+yc 4VDoUJpEP1d0y3Dc5pSfoyf5tWwVFD9OfYb1NVqYAGFGGoYBRGzXnalTA2zmt8SZu7Wu +umHcS3r9wwoudHkUJ8m+VPwfCoYdPl5ugHGv0+D0hr40dqVRaUMkZ/RQEMj4Ssp5YI+ a5CIlAqYoWAmGegqrReuHY3CZWxBngjLwAMMCQ1CeAVStooJQ6myDINsgl+Dgmz1RjAG Hvxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712187719; x=1712792519; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w1ajd+NFF25bzcoUpj6TOVq3gYUXEAPUF2iej3ctG8E=; b=i5yZJ97GGb8TErkkjKwQXXix7WX+LX9JB9maC4bA/O4YucWXVZHuuHRaqAGlotw7Bm bxUChagNhNn7yt6u6FwLCDIPktWxbi3rkYO1z0G/MKeQTtQgwnYF3yhvX5NbKqxC7lsV 3sMdDcGi13BIY+KJuTblSmroIq55UioQpNtxBYJazNKdvT5kMMQzmllvAvG9hv0ON43S 3CmGtWTD/9hMcBy6Ekl8dWGNryT4LTmRiqCjXjEQsHw1fRk5utAMPhU3cDVaZkJzjziw jUAH3MD+nCL0kuV41JBw0XmnsJFKvJIy4K46nv4odEtL7ANuK8OMB+nDNiEAbLNaj4Wy o3yg== X-Forwarded-Encrypted: i=1; AJvYcCUM9bqaTUXvcOMhdXD7tJHI8ptpiyjyWUvPTXDXRGLCcWDPmbjzT5V7ZQDuJpqWCRl+ztnN/CEScupCW0Tukkpn5rs= X-Gm-Message-State: AOJu0Yz53/w15tMq5tQxVZFPeB2rrQ29Gu22ORcltbyxXyRJC3+YXPKK vN4BgZmOnW4N8Y1XcJ0GzW97KdVKDV4TukTp5wddi8f/uX6yRMsPkHZBSuYn7yI= X-Google-Smtp-Source: AGHT+IGh4iyC/GhUryA4pkxFBs7yNJ36fG0Y8vGsIbyj+jFCsDK2F7CISUUTPnXh7UOmjs+99OfNvA== X-Received: by 2002:a17:902:f105:b0:1e2:718c:61e with SMTP id e5-20020a170902f10500b001e2718c061emr712135plb.27.1712187719240; Wed, 03 Apr 2024 16:41:59 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id b18-20020a170902d51200b001deeac592absm13899117plg.180.2024.04.03.16.41.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Apr 2024 16:41:58 -0700 (PDT) From: Deepak Gupta To: paul.walmsley@sifive.com, rick.p.edgecombe@intel.com, broonie@kernel.org, Szabolcs.Nagy@arm.com, kito.cheng@sifive.com, keescook@chromium.org, ajones@ventanamicro.com, conor.dooley@microchip.com, cleger@rivosinc.com, atishp@atishpatra.org, alex@ghiti.fr, bjorn@rivosinc.com, alexghiti@rivosinc.com, samuel.holland@sifive.com, conor@kernel.org Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kselftest@vger.kernel.org, corbet@lwn.net, palmer@dabbelt.com, aou@eecs.berkeley.edu, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, oleg@redhat.com, akpm@linux-foundation.org, arnd@arndb.de, ebiederm@xmission.com, Liam.Howlett@oracle.com, vbabka@suse.cz, lstoakes@gmail.com, shuah@kernel.org, brauner@kernel.org, debug@rivosinc.com, andy.chiu@sifive.com, jerry.shih@sifive.com, hankuan.chen@sifive.com, greentime.hu@sifive.com, evan@rivosinc.com, xiao.w.wang@intel.com, charlie@rivosinc.com, apatel@ventanamicro.com, mchitale@ventanamicro.com, dbarboza@ventanamicro.com, sameo@rivosinc.com, shikemeng@huaweicloud.com, willy@infradead.org, vincent.chen@sifive.com, guoren@kernel.org, samitolvanen@google.com, songshuaishuai@tinylab.org, gerg@kernel.org, heiko@sntech.de, bhe@redhat.com, jeeheng.sia@starfivetech.com, cyy@cyyself.name, maskray@google.com, ancientmodern4@gmail.com, mathis.salmen@matsal.de, cuiyunhui@bytedance.com, bgray@linux.ibm.com, mpe@ellerman.id.au, baruch@tkos.co.il, alx@kernel.org, david@redhat.com, catalin.marinas@arm.com, revest@chromium.org, josh@joshtriplett.org, shr@devkernel.io, deller@gmx.de, omosnace@redhat.com, ojeda@kernel.org, jhubbard@nvidia.com Subject: [PATCH v3 11/29] riscv mm: manufacture shadow stack pte Date: Wed, 3 Apr 2024 16:34:59 -0700 Message-ID: <20240403234054.2020347-12-debug@rivosinc.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240403234054.2020347-1-debug@rivosinc.com> References: <20240403234054.2020347-1-debug@rivosinc.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4159640008 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: g8pta1nm9rznxn9nar5171s9un7kds1h X-HE-Tag: 1712187720-119212 X-HE-Meta: U2FsdGVkX18JoVfQ6r0Q9vd57W5yQr7Uh/8mCHsKtw77zMs6pLRway/tA3uV3ZTFtCCSESd06XUl+b0LWdVvAonSKRdq6fLO3cDyOWtZVYU/rgDdvYloD9Jo75AY7BAuQrk2tffaK3ZrFSDr2DYtHui/7mXqNlXT01+p9QphehY/0oeX9+LtOai8q214IHFG697oqFRtqtiF5Nw/qB2V5RKzF0RDRXcyedlqclwuR86vT9/HZG8toWz1oP6NPQeh5F63vfLgReYlK7l5GAp0VuHPypB6BFd4dKKO8zoE+ZZE/3tUs/1xlKFt7R3chOeaHWaZUqowsfN9bAXxqG8WSYtZ3grCpZd7Xy3+dK0Oqev4a8NpkWxnkl1k6QuoGGYPDpcx2K5+gQYS1i207X8avkT9OnloQ7CIYSnI7a87kPz2hzpCMg42tUzSFteoX6B3YFBq91sYfd027yFdA4OqRUrGQDXA+QsLvd/b3hD0LIEZLLnQdIndkwB/3aKUf6jR/fPYklcmwRmwX7rwalC+bsoiAxG8AxC0RGxP6nvSgT2tEegEBQaNCIpc41FoGBdTwOqF7NcbrPXpLQBzA3/gz8uVBDrf5NM1GWI1Ex0/IHzJKJDIhnkF06rFg2THdrmtRILmMdaD4D3KjhKbsCSpJWft4oz2OP2nOrTP+41tTKsmhtbBS22ujEGY2sl1k+qXgP5uLq8tsqXrpT4zpZmm7nLMZeXHoPoD0mSz7/9RjuRcpAgVtozgTG8yTkU/MoKnP4OBqpygW0MshDff+IwI4rhdY/sWvsRjpTeqxIMqI1G+enw7sEW7D6kN2idf2dccKY5zJsjM6cI72VhzVjaag+yewEge8b0aITTnEQI8DV6WBvYkcmJ5TaxYx9lu4Ue62nFoX9WAn9eho7S/Xy09DEFJhBcLSzwv0SA2tpVq4p88xPpCbPwqW7TD03ReVsCXjVPu4ZtlyGJ6JO08QY7 CzF3/Tis alMI6UjAGSemdfRlErm30t/3zU+mUlG0TX3/o6W4VSseHJGMRHEf+4WOES3ZmjXnJQoGded3Mi7m3H1JV/a3dj743OiVn+Tl+X7N88wpJ1Tq+hVZoYMRqR3neSPssLOxIgNmu/T45tilPE1zxqqV4YGRt9epZJhwcrzBjxcAy2p9WpU9G8G6nJHh5PNnHXVwFVvMzAw2NcAP8orsFN3T9HLh0nFrWW/A2kRt2fAy40kJhJ8g= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000016, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This patch implements creating shadow stack pte (on riscv). Creating shadow stack PTE on riscv means that clearing RWX and then setting W=1. Signed-off-by: Deepak Gupta Reviewed-by: Alexandre Ghiti --- arch/riscv/include/asm/pgtable.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 4d5983bc6766..6362407f1e83 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -408,6 +408,12 @@ static inline pte_t pte_mkwrite_novma(pte_t pte) return __pte(pte_val(pte) | _PAGE_WRITE); } +static inline pte_t pte_mkwrite_shstk(pte_t pte) +{ + /* shadow stack on risc-v is XWR = 010. Clear everything and only set _PAGE_WRITE */ + return __pte((pte_val(pte) & ~(_PAGE_LEAF)) | _PAGE_WRITE); +} + /* static inline pte_t pte_mkexec(pte_t pte) */ static inline pte_t pte_mkdirty(pte_t pte) @@ -693,6 +699,12 @@ static inline pmd_t pmd_mkwrite_novma(pmd_t pmd) return pte_pmd(pte_mkwrite_novma(pmd_pte(pmd))); } +static inline pmd_t pmd_mkwrite_shstk(pmd_t pte) +{ + /* shadow stack on risc-v is XWR = 010. Clear everything and only set _PAGE_WRITE */ + return __pmd((pmd_val(pte) & ~(_PAGE_LEAF)) | _PAGE_WRITE); +} + static inline pmd_t pmd_wrprotect(pmd_t pmd) { return pte_pmd(pte_wrprotect(pmd_pte(pmd)));