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 CC194C433F5 for ; Tue, 19 Apr 2022 13:19:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 198908D0074; Tue, 19 Apr 2022 09:19:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 148FB8D0047; Tue, 19 Apr 2022 09:19:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F2ACE8D0074; Tue, 19 Apr 2022 09:19:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.26]) by kanga.kvack.org (Postfix) with ESMTP id DF3AB8D0047 for ; Tue, 19 Apr 2022 09:19:56 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id AF864246E5 for ; Tue, 19 Apr 2022 13:19:56 +0000 (UTC) X-FDA: 79373686392.08.87375E6 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by imf01.hostedemail.com (Postfix) with ESMTP id 8430340013 for ; Tue, 19 Apr 2022 13:19:55 +0000 (UTC) Received: by mail-ej1-f48.google.com with SMTP id r13so32881121ejd.5 for ; Tue, 19 Apr 2022 06:19:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=cWoWgEcXIMYRuEsZLERLpvc6D4fQ6dZb3dEHGDCcqIs=; b=fY6TQpn2KPv+1NlQy1Jow9T1OohAsjrB3oV9ppqNtHvd0r+4OW08v/avNwv1G8Odjm D/2GsdfYMSvjtxG1P4B7SzmR2XTR5xS2bZ0XXxMVMHNciSyV6R5MO6AkQwLdeFk1lHfh Cgt7v30oEPEsJbmsWTr9+ULhOcR1ribWin+0SWBgoc1mhBYRwOlMDx37E219LP/c8iur e8Jl67Cq3yYNgZHQHPlunLvMK0ujRMh0wPaA5jNKhTst45qBNw6ujFZl8BZe81KmcSAw S+BsJt8ItH1FzOurK6u7x4BM44CcrZpOkFaSvq0vaqehD0L+SUhwh2c75xAXXhRm0fg5 rMMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cWoWgEcXIMYRuEsZLERLpvc6D4fQ6dZb3dEHGDCcqIs=; b=r/1kDZoJPMCwgpemyPFUa2Ucq6RaL/k57TI8UmUorevwHDhIv9ZxmDpDGLEpouOXKo PiPtHV0PpfB+W//ZA2OU9j1Y/XpuZCfA1yWFiCtRqvu3dmKhxVxePSSqnhVoJ5jm8wau OfoxVsUI9ui/qFK7hRsNUdUINDY0v8W8eKjnL2i5HrG9H0zzEOiv4yrEoxTSEpeAA3KX oB+iJIiOlLZ93mnLIl0VqlBe6FQz+FXc9vEPAW5Ya7Ma4PeQxgpmyJtsfR4c0Lydso5V VCo2Eyzret28PO6XnfVq/MtXZ6JODISMkdpDhc9qp/i6gvjREve/N424URC0oG2E2UD9 wcCw== X-Gm-Message-State: AOAM530amA5gBiMpOlD+brelJm4u72ckljExoqIzMLyZX2RldU34k2Nx OBZ9URnuWUV+QF/2cqvNtwej9RgavkUGWwWga6RB4A== X-Google-Smtp-Source: ABdhPJwnqnEl1PogZpbrEzxXO0aXN+psYbjJRFm+NSGmxo/x2WJ/ZC6/8hzNHXDDrwtWHaCSyZ4gF5RFiYFl5n9G5cc= X-Received: by 2002:a17:907:1c8a:b0:6e9:2a0d:d7b7 with SMTP id nb10-20020a1709071c8a00b006e92a0dd7b7mr13404246ejc.572.1650374394669; Tue, 19 Apr 2022 06:19:54 -0700 (PDT) MIME-Version: 1.0 References: <20220418034444.520928-1-tongtiangen@huawei.com> <20220418034444.520928-4-tongtiangen@huawei.com> <073cb6a6-3dbc-75d4-dbfe-a5299a6b0510@arm.com> In-Reply-To: <073cb6a6-3dbc-75d4-dbfe-a5299a6b0510@arm.com> From: Pasha Tatashin Date: Tue, 19 Apr 2022 09:19:16 -0400 Message-ID: Subject: Re: [PATCH -next v4 3/4] arm64: mm: add support for page table check To: Anshuman Khandual Cc: Tong Tiangen , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "H. Peter Anvin" , Andrew Morton , Catalin Marinas , Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , LKML , linux-mm , Linux ARM , linux-riscv@lists.infradead.org, Kefeng Wang , Guohanjun Content-Type: text/plain; charset="UTF-8" Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=soleen.com header.s=google header.b=fY6TQpn2; dmarc=none; spf=pass (imf01.hostedemail.com: domain of pasha.tatashin@soleen.com designates 209.85.218.48 as permitted sender) smtp.mailfrom=pasha.tatashin@soleen.com X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 8430340013 X-Stat-Signature: u5g5ezgxb1rz9n46ejnxi7fynjxu87oz X-HE-Tag: 1650374395-542467 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 Tue, Apr 19, 2022 at 6:22 AM Anshuman Khandual wrote: > > > On 4/18/22 09:14, Tong Tiangen wrote: > > +#ifdef CONFIG_PAGE_TABLE_CHECK > > +static inline bool pte_user_accessible_page(pte_t pte) > > +{ > > + return pte_present(pte) && (pte_user(pte) || pte_user_exec(pte)); > > +} > > + > > +static inline bool pmd_user_accessible_page(pmd_t pmd) > > +{ > > + return pmd_present(pmd) && (pmd_user(pmd) || pmd_user_exec(pmd)); > > +} > > + > > +static inline bool pud_user_accessible_page(pud_t pud) > > +{ > > + return pud_present(pud) && pud_user(pud); > > +} > > +#endif > Wondering why check for these page table entry states when init_mm > has already being excluded ? Should not user page tables be checked > for in entirety for all updates ? what is the rationale for filtering > out only pxx_user_access_page entries ? The point is to prevent false sharing and memory corruption issues. The idea of PTC to be simple and relatively independent from the MM state machine that catches invalid page sharing. I.e. if an R/W anon page is accessible by user land, that page can never be mapped into another process (internally shared anons are treated as named mappings). Therefore, we try not to rely on MM states, and ensure that when a page-table entry is accessible by user it meets the required assumptions: no false sharing, etc. For example, one bug that was caught with PTC was where a driver on an unload would put memory on a freelist but memory is still mapped in user page table. Pasha