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 E9943C61DA4 for ; Wed, 22 Feb 2023 15:47:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 69AE36B0072; Wed, 22 Feb 2023 10:47:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 64B236B0073; Wed, 22 Feb 2023 10:47:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4EB406B007D; Wed, 22 Feb 2023 10:47:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 3B63E6B0072 for ; Wed, 22 Feb 2023 10:47:36 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id F36EFC0AF5 for ; Wed, 22 Feb 2023 15:47:35 +0000 (UTC) X-FDA: 80495357670.29.298BC9B Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by imf10.hostedemail.com (Postfix) with ESMTP id 3A47FC0025 for ; Wed, 22 Feb 2023 15:47:34 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=GbSXcc4N; spf=pass (imf10.hostedemail.com: domain of jthoughton@google.com designates 209.85.215.180 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677080854; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6xhy0KduJrjH6x8qxkMthBBJxGQOVTbwtgaxtb34xHw=; b=6lC1TIgbDvA4nrsPLGLxOZwGhvlRU7uyJcJ0i7WTxOloGyrullMS/mHRQw1GeMjA9vrhkv DlQAbGCG1TBncBVFo7x9vuSBCQwEeSXURix5dMdZuXKX8fdzcIPLIeJR6DD5k4upV6qaTc uZt/IYECsBJJNww894k1/m/jzD+R0X0= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=GbSXcc4N; spf=pass (imf10.hostedemail.com: domain of jthoughton@google.com designates 209.85.215.180 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677080854; a=rsa-sha256; cv=none; b=M2O2aAXRBJ/7dGZpcdZISj7tzrNCBKSSXIyIDhjZvCeGexi9DQlW/NLlqzmDTPo6gcFscX z+A7Hzy8dJUzj2EYBFTg8ZwTIFN1OIAFLft3Ku9R4PhAcYP8wT/WoURLNr2VwKXRzVhd+/ DM9G7MZjwCl0NUcJU0vys1oD78YTDq4= Received: by mail-pg1-f180.google.com with SMTP id 130so1994159pgg.3 for ; Wed, 22 Feb 2023 07:47:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6xhy0KduJrjH6x8qxkMthBBJxGQOVTbwtgaxtb34xHw=; b=GbSXcc4NhVcdNgz9DdYITwiNg1vbTRf8pAQqpM4qs5UcTbdQ+bH8qDJkn3qdZEqiuR Oc+Je+iuMkH+0KuiqGUSnAnyfABgPXHZAynNAVTUdzAt0V1w0ZWRThbr25ZAFxtzGZm9 FnUcma1jDwAWtwdJo2MXgKmEK2aUip+IATN3LJBelPjzvqKviiNCaDtmqY1XTXVimHUR DnnKrQYhu+PMUF/HvK0OqQxvSeinzGeK71lVawXG/JpVjS27mToqOZAzIWsfKoA475QY nnXl1RvumhCy2/uLHvn8qjHeftqgnlBNg7QnJ5RqAstUnA5TQpRnLDvUlU4K0e3AxoA+ TrrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=6xhy0KduJrjH6x8qxkMthBBJxGQOVTbwtgaxtb34xHw=; b=WpXQ31SriViA9B063OTQUGdXgGbdJsEsT+f01gMefvtODE2qpKqkeUHUxRdNzXDFab XRirmzpY4gKuYmEoO+7xIU+kUHvViE5QAlfian19tA87Zq6OT4jcFtsYw7hk57Y1ns2x 7NCXthZL5SlkslIYVikVkfyxzItKe2MvcoCQ9EJNUKC1fsm6TBesbino0VilYV+4mF9s tqdsmHxG2B8s3Q86Q3MIiFwIrT2/2pxEFGMgqv/APCAExKAHnLNI3eysY048rYSbwa2E zCjD2dwmx0TM504zZfvaWzyKQbjjzwxPPniBDXjQU7t6w1DuONGo46NUJtBXXNvQmiVT rS/Q== X-Gm-Message-State: AO0yUKXKTSehIkZQ9NFfOMimfdffNlqdk9CEmONNZ3VGplncZxE6M7VZ 7GJNsLMoyMQaEWRqt9DM8SFnoPBc0VB8lQZaDSpugQ== X-Google-Smtp-Source: AK7set+iW5vmjMXMKi2kWxkLgEa9gEt7kxmgM+ZBl0soLAIEwTPS5vc7OXxQlzsWMgYcCUrp2o0FUlpqUizYCkQWYBg= X-Received: by 2002:a63:340d:0:b0:4fb:3591:c608 with SMTP id b13-20020a63340d000000b004fb3591c608mr1090181pga.4.1677080852735; Wed, 22 Feb 2023 07:47:32 -0800 (PST) MIME-Version: 1.0 References: <20230218002819.1486479-1-jthoughton@google.com> <20230218002819.1486479-18-jthoughton@google.com> In-Reply-To: <20230218002819.1486479-18-jthoughton@google.com> From: James Houghton Date: Wed, 22 Feb 2023 07:46:55 -0800 Message-ID: Subject: Re: [PATCH v2 17/46] hugetlbfs: do a full walk to check if vma maps a page To: Mike Kravetz , Muchun Song , Peter Xu , Andrew Morton Cc: David Hildenbrand , David Rientjes , Axel Rasmussen , Mina Almasry , "Zach O'Keefe" , Manish Mishra , Naoya Horiguchi , "Dr . David Alan Gilbert" , "Matthew Wilcox (Oracle)" , Vlastimil Babka , Baolin Wang , Miaohe Lin , Yang Shi , Frank van der Linden , Jiaqi Yan , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 3A47FC0025 X-Stat-Signature: gycedaurwfwhnu1uny9exnaetwuuihzk X-Rspam-User: X-HE-Tag: 1677080854-674782 X-HE-Meta: U2FsdGVkX1+4FW6GX2IwJLrvHRSeiXLl6mpXZOeB7otJQ4PjdC1kJBYnrPOyjNQ01WLFRARnA3R+yqHGS9jt5gCb7EaTfM9UWK/eNKu3os9SaB+pGc3/RoOfagehMvLsvrsUbwHMrmF6Xllp7NoogM6mSiKb63H9fyS7ubSBEYVm2DGZwYTv43w/5ZIEyVyaowb0pFVzIakxEBFvltaRky9FOctfQtlz0PjEVYwqmeNSQvHU2BthUmStW6GKTlJYeVWqW0NS5Y26xQNS7sU/eBBOqihTRR4+755Uz7qJLxncUhx7WKkDEUaue9ZTYUSA7WrEpyLWvRNAznu8tqFNEQxlSsQTDS0geHIzpKBAxo6PO27Cmg9g29pYx9WttLdUGL5eh5glUWVZ3P3lFzwegSkvgZmzPgmKTxfZaL4IucnWhac1u9HKUKQlPi8qwGGCfC09dypIZaLVfvV5WDct0ILeKR2oXiCktoPJcSoPSZI5/Hsdgqfs9KI3NVwV3VNs8UZV5NV56qOe+byjsdy/yeGL+k5x8JuThYQZ9of6WA+d2yOuIYe//On6TqRCsPSR5th2ZGyZCrgZwWCrdTT4XiaZ/NF7l6JJ55vpY6kCRjCS1LsWzuQdZWZhiEKX5BAD7hu28nUWgdMLXGDanM/OeFujhwlTlbJ77WwQA+1bj7oyAvXwLURFELI6/oCbCfYy0m834eo66KHDsvUoahxkY0yHn1Y2HASWcEM04ruvCUwdbDBgpyLv3aR8PCOHUW8J/Ej0GzQK1fJ3DRmmi4P/AI5UGJ09PfYTQx3vRFunwTm98aRYrRIUNh3kUQLaGmhNNiPmCo9+9tk//zNa5JkPZ+y2P2Y9WSseQ5i4suEAaqml7JxK9OVpolbi/ivrbr8kE+qtmylMT6kZPfT4BFFDi56c3KBu0RDCPyt83dRK++T4JLvAEatCtY4rEq1y20MNEgf22iK85yCOEs8trV7 nDT48eXA G6j5pOLarI/t49b23MNPXOtgzTY/B3CDpTg6DxMToVDaIjMpfHBv6ZkdbKbRpT/VuR9l/BJKJK3R9UfrKnEP5zkV6Y59Noj78ZEPtHFpM+iYcNyxjA5U5vHgS6gAf7bavDzR+qhUlX54ysRQOchDd9a9aWBdApQ+7wezOFAOkX6JfzHd/7uxdRGikWA3hbpjo9kp4lN0BVLpR5WSSE3xQnCaQK+YNkcIsc5Mb5BHb32Q220sOvOvL3qs3B9reekynmX/+ZUlxkzFfo21hPVHvDorB/S9cg7cxu3MvWHphtdN+lkXHAlE6BZHBxwG4QCbvTgd/BXLDCW5Pi24= 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 Fri, Feb 17, 2023 at 4:29 PM James Houghton wrote: > > Because it is safe to do so, do a full high-granularity page table walk > to check if the page is mapped. > > Signed-off-by: James Houghton > > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index cfd09f95551b..c0ee69f0418e 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -386,17 +386,24 @@ static void hugetlb_delete_from_page_cache(struct folio *folio) > static bool hugetlb_vma_maps_page(struct vm_area_struct *vma, > unsigned long addr, struct page *page) > { > - pte_t *ptep, pte; > + pte_t pte; > + struct hugetlb_pte hpte; > > - ptep = hugetlb_walk(vma, addr, huge_page_size(hstate_vma(vma))); > - if (!ptep) > + if (hugetlb_full_walk(&hpte, vma, addr)) > return false; > > - pte = huge_ptep_get(ptep); > + pte = huge_ptep_get(hpte.ptep); > if (huge_pte_none(pte) || !pte_present(pte)) > return false; > > - if (pte_page(pte) == page) > + if (unlikely(!hugetlb_pte_present_leaf(&hpte, pte))) > + /* > + * We raced with someone splitting us, and the only case > + * where this is impossible is when the pte was none. > + */ > + return false; > + > + if (compound_head(pte_page(pte)) == page) > return true; > > return false; > -- > 2.39.2.637.g21b0678d19-goog > I think this patch is actually incorrect. This function is *supposed* to check if the page is mapped at all in this VMA, but really we're only checking if the base address of the page is mapped. If we did the 'hugetlb_vma_maybe_maps_page' approach that I did previously and returned 'true' if !hugetlb_pte_present_leaf(), then this code would be correct again. But what I really think this function should do is just call page_vma_mapped_walk(). We're sort of reimplementing it here anyway. Unless someone disagrees, I'll do this for v3.