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 X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65B63C433E6 for ; Fri, 19 Feb 2021 00:48:39 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C064E601FC for ; Fri, 19 Feb 2021 00:48:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C064E601FC Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 71F388D0002; Thu, 18 Feb 2021 19:48:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A5238D0001; Thu, 18 Feb 2021 19:48:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F8B68D0002; Thu, 18 Feb 2021 19:48:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0136.hostedemail.com [216.40.44.136]) by kanga.kvack.org (Postfix) with ESMTP id 357398D0001 for ; Thu, 18 Feb 2021 19:48:37 -0500 (EST) Received: from smtpin11.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 07581180ACEE8 for ; Fri, 19 Feb 2021 00:48:37 +0000 (UTC) X-FDA: 77833181874.11.2B0AC36 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by imf16.hostedemail.com (Postfix) with ESMTP id 0729480192DD for ; Fri, 19 Feb 2021 00:48:35 +0000 (UTC) Received: by mail-yb1-f202.google.com with SMTP id o9so4717625yba.18 for ; Thu, 18 Feb 2021 16:48:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:in-reply-to:message-id:mime-version:references:subject :from:to:cc; bh=Gqbdv7dcKJ3HCSbhGAkcVMLKp5XjaZ2pyZBQ0WD1HYc=; b=Ik5mLa+wIzQ9zfYIXzCW8txps5b0LOtlw5SCrz0oCUlrnn7+7YcukDUOv592BKXIqA XyMpq/lVfamEDV77jRUDPpYomIaSg3srYMmwkz4alfwvoOPbJWqLB0s4hfvKyGQmNSjh SAvyLDI68vF48r++B4/5iUJqMpniXnHnA186xd0b+LGQigqd7YehpirHSvL8pzcClIdG tblMLXy0TyMR+kiVbvV74wD5F6ko1FL2kimeYxojeJbkG5WBJJal+0ySZ9HVCMhuGoNK B87mVtEI4pnGDDEI82to7662ighQZ673OxM1jDpoBdoODkD66MnmLr0kYQrwJHg+9Oej KYJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=Gqbdv7dcKJ3HCSbhGAkcVMLKp5XjaZ2pyZBQ0WD1HYc=; b=Rj+rJcjr6t5RRIGM4C0kkQ/tBtY5RAUo2vcFmz2UrcMq21D/HgdUMblbKPKIdL/SCO ZZLMFsTOXOpiw01Xaz88xagi6e1j+oelKsZLOAiaCF/Sid9N9CK8dXO3//ZEdK7jLnPk VzXpp7+ikfkyI6sQyGUW+aQFzEPMXbUc92fhHvk07962TvfUvjKVI+2Ee2u8ABGJA+FO YUDxQQHpCptbn3QXEJekGQZu4RScV8k5MPgJQRvrH1nQ2Q/7MykfqlKiOUP7qLFgTXNu yM7f9qaZw87zhnjiashNFknF8rmCybiuXQv5I21rFdwFmrewpMFpxi3obLJaN5kzx5Hw 9jKQ== X-Gm-Message-State: AOAM530Qfac9e5e8leX78sbiDtg36jqOBU6T8hjkuSSukEvc+vW576Sm +3uPHRB2STt/FHAUe629Cr1e2f4u1NydIExeElqO X-Google-Smtp-Source: ABdhPJy58+nl+97/Bd88jvU8zeF4QbRXiH9mdsFm7pt16swihROM91O3O2VWhD1CU7In7elQn2DEoUgM9zB2OdCtvM/s X-Received: from ajr0.svl.corp.google.com ([2620:15c:2cd:203:e939:4cce:117:5af3]) (user=axelrasmussen job=sendgmr) by 2002:a25:c090:: with SMTP id c138mr6712073ybf.279.1613695715827; Thu, 18 Feb 2021 16:48:35 -0800 (PST) Date: Thu, 18 Feb 2021 16:48:20 -0800 In-Reply-To: <20210219004824.2899045-1-axelrasmussen@google.com> Message-Id: <20210219004824.2899045-3-axelrasmussen@google.com> Mime-Version: 1.0 References: <20210219004824.2899045-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.30.0.617.g56c4b15f3c-goog Subject: [PATCH v7 2/6] userfaultfd: disable huge PMD sharing for MINOR registered VMAs From: Axel Rasmussen To: Alexander Viro , Alexey Dobriyan , Andrea Arcangeli , Andrew Morton , Anshuman Khandual , Catalin Marinas , Chinwen Chang , Huang Ying , Ingo Molnar , Jann Horn , Jerome Glisse , Lokesh Gidra , "Matthew Wilcox (Oracle)" , Michael Ellerman , "=?UTF-8?q?Michal=20Koutn=C3=BD?=" , Michel Lespinasse , Mike Kravetz , Mike Rapoport , Nicholas Piggin , Peter Xu , Shaohua Li , Shawn Anastasio , Steven Rostedt , Steven Price , Vlastimil Babka Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, Adam Ruprecht , Axel Rasmussen , Cannon Matthews , "Dr . David Alan Gilbert" , David Rientjes , Mina Almasry , Oliver Upton Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 0729480192DD X-Stat-Signature: c7jkpyink8uboogqse1dxakzpbpqazi6 Received-SPF: none (flex--axelrasmussen.bounces.google.com>: No applicable sender policy available) receiver=imf16; identity=mailfrom; envelope-from="<34wovYA0KCLwczgntcuowuugpiqqing.eqonkpwz-oomxcem.qti@flex--axelrasmussen.bounces.google.com>"; helo=mail-yb1-f202.google.com; client-ip=209.85.219.202 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1613695715-970016 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: As the comment says: for the MINOR fault use case, although the page might be present and populated in the other (non-UFFD-registered) half of the mapping, it may be out of date, and we explicitly want userspace to get a minor fault so it can check and potentially update the page's contents. Huge PMD sharing would prevent these faults from occurring for suitably aligned areas, so disable it upon UFFD registration. Reviewed-by: Peter Xu Signed-off-by: Axel Rasmussen --- include/linux/userfaultfd_k.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index 0390e5ac63b3..e060d5f77cc5 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -56,12 +56,19 @@ static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma, } /* - * Never enable huge pmd sharing on uffd-wp registered vmas, because uffd-wp - * protect information is per pgtable entry. + * Never enable huge pmd sharing on some uffd registered vmas: + * + * - VM_UFFD_WP VMAs, because write protect information is per pgtable entry. + * + * - VM_UFFD_MINOR VMAs, because otherwise we would never get minor faults for + * VMAs which share huge pmds. (If you have two mappings to the same + * underlying pages, and fault in the non-UFFD-registered one with a write, + * with huge pmd sharing this would *also* setup the second UFFD-registered + * mapping, and we'd not get minor faults.) */ static inline bool uffd_disable_huge_pmd_share(struct vm_area_struct *vma) { - return vma->vm_flags & VM_UFFD_WP; + return vma->vm_flags & (VM_UFFD_WP | VM_UFFD_MINOR); } static inline bool userfaultfd_missing(struct vm_area_struct *vma) -- 2.30.0.617.g56c4b15f3c-goog