From mboxrd@z Thu Jan 1 00:00:00 1970 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 7AA63C6FD1D for ; Fri, 17 Mar 2023 17:05:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AD1C36B0075; Fri, 17 Mar 2023 13:05:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A81C86B0078; Fri, 17 Mar 2023 13:05:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 949586B007B; Fri, 17 Mar 2023 13:05:31 -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 84D3F6B0075 for ; Fri, 17 Mar 2023 13:05:31 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 543A21A19D3 for ; Fri, 17 Mar 2023 17:05:31 +0000 (UTC) X-FDA: 80579016462.08.0B3FBDF Received: from mail-yb1-f182.google.com (mail-yb1-f182.google.com [209.85.219.182]) by imf18.hostedemail.com (Postfix) with ESMTP id 665841C001A for ; Fri, 17 Mar 2023 17:05:29 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=rivosinc-com.20210112.gappssmtp.com header.s=20210112 header.b=pP5A+izr; spf=pass (imf18.hostedemail.com: domain of debug@rivosinc.com designates 209.85.219.182 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=1679072729; 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=s8pw8ANjC03MPGK7KX+jv/0782fAZ5TNseS9cfoKjGg=; b=ZGNJeYEPO/NssZXhFyDXsQlYEgfqAu1BDKbI1edMjUxcsIKJdLCG9DV6IHUqsBIGCZ9Qtq Bo9dDtNAm/2HpWama+J4hFgfhrh0CNze8sGfoPnnE44V/vW3OfIkW6YQ4ADh8nxfVN4dSR VsL6T3R0bwteiziPqwJzhVLYDTcL/wQ= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=rivosinc-com.20210112.gappssmtp.com header.s=20210112 header.b=pP5A+izr; spf=pass (imf18.hostedemail.com: domain of debug@rivosinc.com designates 209.85.219.182 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679072729; a=rsa-sha256; cv=none; b=idW/wLhfBDEYOX9nHKgQ/w1krSvZqf3Ct8+vRvRYCZW28FKP0I3CMdCY1hhjfHwKNOxY7G 2jV1lI47mgvP4ZrBWUzOh3dJATvZMQkwi1WAbBJf4CenJFiUsJdsTebMxZTjJuh2f7Ewds MNb+MjA/t8SZBVeoarif7XY+/yVQ/bQ= Received: by mail-yb1-f182.google.com with SMTP id t6so365933ybb.9 for ; Fri, 17 Mar 2023 10:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20210112.gappssmtp.com; s=20210112; t=1679072728; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=s8pw8ANjC03MPGK7KX+jv/0782fAZ5TNseS9cfoKjGg=; b=pP5A+izrLpH07QymScG4K0Q3RviucyHodZbuurWnbqgGs2l1xnUwo1+rbiuh8HFsah piqiQJlAN+H5zgY2WxLTZUo/9QQHUXh1fQ8fkIDsmjBFjPbgj9csybuw3J1L9nJ/ABi2 bFL5HkeGlW6PAwFgupg0pDB08xpPMBGgJAHN+m8IwU/ztiydhNiNFfYurnrwyAOno9a4 Ujb8IACLqfDadtIwc+YU/TBIHXect4WadFxISSTKwMnlSxrq2hhm2qlA1wjrVqf162// 5j9vaTz0UNhHxR8M9TINFZJ7p4TkddhzKVSme3hBv4/lvcBPrlxD/Sob7G6k8WSKQlr4 lvhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679072728; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s8pw8ANjC03MPGK7KX+jv/0782fAZ5TNseS9cfoKjGg=; b=iMxTYSzKRhJjBMQfNT9MJ2sY11qOnhzhB4osBIImg2BUSdk6Cbgnyud970SlNrVhnS COqR9XLI3AamRbudaWsazr3EUSmxXGmBvKlbiuTMERj7Otyhzaxb/MtQIDdXqPsSLIaB cFz4zQ8TuktWYKl/6ryiBu2rh1WIbHIXImt5uuAs53lGU6T1KOsYmvHxyFPku667lojX S/+DPsrTwjpkkn11sv7kiwQcF3gBHLhDOfilHUN9ANWBGh3OoC7aEjKNWDzRkxGXtzOx M5H0Q4qFVvfxK3bepmdXveGQnnRKBWvumICzpm1uSDtF0Mop1sg4OwX32+u7WQ3WrYBg YWWg== X-Gm-Message-State: AO0yUKXKdrhw/OBNWh6p9D3BJY71laAhyBo0oOnQpW+YRU5zsQ5QNKRO j2KDnPJszHw7+TzMgDMwF9RfKyJFIvRdcu2obTgu1g== X-Google-Smtp-Source: AK7set+D8OFVbAtEyZV0DNRmF/56fcde9ah8LpollyTgt+UHbDfOUt8Zr0yeZMQQArbAGbw+RPWEeXZ7zZLCT8vnPLs= X-Received: by 2002:a05:6902:85:b0:a6f:9156:5579 with SMTP id h5-20020a056902008500b00a6f91565579mr138099ybs.12.1679072728330; Fri, 17 Mar 2023 10:05:28 -0700 (PDT) MIME-Version: 1.0 References: <20230227222957.24501-1-rick.p.edgecombe@intel.com> <20230227222957.24501-25-rick.p.edgecombe@intel.com> In-Reply-To: <20230227222957.24501-25-rick.p.edgecombe@intel.com> From: Deepak Gupta Date: Fri, 17 Mar 2023 10:05:19 -0700 Message-ID: Subject: Re: [PATCH v7 24/41] mm: Don't allow write GUPs to shadow stack memory To: Rick Edgecombe Cc: x86@kernel.org, "H . Peter Anvin" , Thomas Gleixner , Ingo Molnar , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-api@vger.kernel.org, Arnd Bergmann , Andy Lutomirski , Balbir Singh , Borislav Petkov , Cyrill Gorcunov , Dave Hansen , Eugene Syromiatnikov , Florian Weimer , "H . J . Lu" , Jann Horn , Jonathan Corbet , Kees Cook , Mike Kravetz , Nadav Amit , Oleg Nesterov , Pavel Machek , Peter Zijlstra , Randy Dunlap , Weijiang Yang , "Kirill A . Shutemov" , John Allen , kcc@google.com, eranian@google.com, rppt@kernel.org, jamorris@linux.microsoft.com, dethoma@microsoft.com, akpm@linux-foundation.org, Andrew.Cooper3@citrix.com, christina.schimpe@intel.com, david@redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 665841C001A X-Rspam-User: X-Stat-Signature: fjsuzxp6k1xoxs1as3z6grfni3ygxedd X-HE-Tag: 1679072729-720548 X-HE-Meta: U2FsdGVkX19aKhV/VPF1WkUSZO9/DYdq0zJXgdZyxasZ5GuihhK9amueEeWObXUFJFcmMAKiNutujELNlg0n5h0qOwmp7m+PK0p69YrWAALsyxlyz0R6d/seviblwSUDvk+B5KIeTQO3P50Z8MzclgQFzvAhFQFgnz9stV2OXjfUmy/+U/5hqoFyOBDcXN7DrcLT6XoEOpjY57cW4YmvU2HlWKZ89Ion80Yjw3ul8Jqy6A9cCJoR1RB1jQ89IPWvt5AH2kdIXN0Ep4MBdyc/yy9vuL3Md8+FMsY2mw1zrIHmZy2xWK7rZRsFYrdqYq/pGLBS5OqaCLH8DpZcVwFJ5sQr/h2ciz1S23VfzQqdLn7UCm/tQYhV2DSHNE6uzWaMpdb+KNoKDm13ZizxMJjpt6fLx3gLyxmIKlg0Z3m0hUXChrw0mwLzB8Vynpfz7xlE1i3dnlEblL4fOXs5hMAESUJ9LBjn5HCk7I5aZfV2ncveEIzukJPIVeMr9cYUmtkWZ9GLHaAAbxVgPvSUkzEQyA3hV7fKk+XYvKmm3SPyGLBDaiova8UEcAzxOy9NQifmgD+uDxkT+C2hl2049dLbteZrRISuYwqkeiDAgnvpQxo6yg9UJzApSISa9iMYOHRyMp6uHw28RQJII8ljr9zREFsIiTZ7DAmpQfWCKrbP1wCL4pH+7EdeiY2x3xpEecPK9OBs6gmHA3sLr934nXV35cYob4me75KNJk9ZljXRW7tcOdYzJUF1G8yIKVwj74xN8IQIW9C9AUSgXH65OKMEY090nCHLY6Vf2e2k8H5s8ngMtCE300yVz5+8b6IhBO4HAlXm7DHx37ohz+i32XYJzSaBaxaZhpw8GNtwSm6agJwwtoXO3TP7KKcuEYQBgdAFTL2sP4PKQb0C63nLMyH/eh44XMpZa5baylNTnZr4DH/jnQ0FfbPWfhRl6FbXRRbEd+/HZx8KL7QinSXyoZz MQi2eemN 9135GhQYeu6Lqa/zEGU+1fjKzo7EUefTdSjnUZhuumalZyIYCiFxgqbd9wEPlgnU0s3te4Wbigo6RqjljHkdiYHXzraVnYV8nk4gyO6LQfbHykb4k9KP0oN6u+0EDotC306/AFqSMOqpZeC76hjjjf+VFzPyQia90I6HdEnTJ1Nz54fK138GdQGadPrry961Beq9LOuNe0sDThdR9JvuCiguryvCTfsT29bcFCx6VaaWohBLMDErPmGtJm1LlWq4cBYikQMj0RYKXDeWCKJ1ziPkL9wA5yqmARI7FpQq961ZJbbMdsn3Qr4XSGDCnYlyjMEHJ3djWdUDotuzw/OHAm9JXtxPeOLpbDXwLnBazBFI90Iqt6SCIozE1FoY2DkI62ubF 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: On Mon, Feb 27, 2023 at 2:31=E2=80=AFPM Rick Edgecombe wrote: > diff --git a/mm/gup.c b/mm/gup.c > index eab18ba045db..e7c7bcc0e268 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -978,7 +978,7 @@ static int check_vma_flags(struct vm_area_struct *vma= , unsigned long gup_flags) > return -EFAULT; > > if (write) { > - if (!(vm_flags & VM_WRITE)) { > + if (!(vm_flags & VM_WRITE) || (vm_flags & VM_SHADOW_STACK= )) { I think I missed this in the review. `VM_SHADOW_STACK` is an x86 specific vmaflag to represent a shadow stack VM= A. Since this is arch agnostic code. Can we instead have `is_arch_shadow_stack_vma` which consumes vma flags and returns true. This allows different architectures to choose whatever encoding of the vma flag to represent a shadow stack. > if (!(gup_flags & FOLL_FORCE)) > return -EFAULT; > /* hugetlb does not support FOLL_FORCE|FOLL_WRITE= . */ > -- > 2.17.1 >