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 6B777C7619A for ; Wed, 5 Apr 2023 15:12:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DD64D6B0072; Wed, 5 Apr 2023 11:12:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D86766B0074; Wed, 5 Apr 2023 11:12:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C27F76B0075; Wed, 5 Apr 2023 11:12:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B05CA6B0072 for ; Wed, 5 Apr 2023 11:12:53 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 8DA7EAC727 for ; Wed, 5 Apr 2023 15:12:53 +0000 (UTC) X-FDA: 80647679826.09.2B8C05B Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf22.hostedemail.com (Postfix) with ESMTP id 87004C0011 for ; Wed, 5 Apr 2023 15:12:50 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=aQIBesq4; spf=pass (imf22.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680707570; a=rsa-sha256; cv=none; b=sHmlwbg+50a1foZFbqTNZdWCQs5urU6hOkD7u9DEGbGnAPlXJg5GV7Zo4KeDq0TCQWoK41 IePZRr1q+E45IAALwdqDYd422bdjtkvAp7+bgD2+kM3ycgNn1eEYnURnTmONTwYrC2xUiH 6IX8CC6RWNTCLceCD6ErpbYs5i2nCrI= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=aQIBesq4; spf=pass (imf22.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680707570; 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=NbqrRYoH4MhiCPZmKOq0P0xBbJ8jHZBz12BO3KGobG4=; b=zi30xJfKP69tV/Xy+wp/XNEG4BE8S1u6HYjtnlfnCA6Z8QNx1e1k1La0lGcO0Occ1weYGd QUqSAQTnnT0TPO79q1Adx4/UZy+gH3NYOwBKJSS+iBdg62RCa0GziBX2UurVw6OsXN0iSZ 2cOPvuoVvFpPchc9+8fCFA2A+Iex19Y= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680707569; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=NbqrRYoH4MhiCPZmKOq0P0xBbJ8jHZBz12BO3KGobG4=; b=aQIBesq4tEa8otdLYqRu8oC8ZMD7YoJ9/6O1nADLbNGqVf92nLfglC3BeERk0x3s20LbRA 3qLTxJ/gxGNp+IEK9BNTsXxUW2h2CBrC3q+Kcx/jcS2Ltahjlf49ZBpFXlTMxiFuDPEKJm gvz97ng6P5pg9WV4eKBoLa00wpNzs8A= Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-644-d5xgY_5IOPSHssHtX_ZDNQ-1; Wed, 05 Apr 2023 11:12:48 -0400 X-MC-Unique: d5xgY_5IOPSHssHtX_ZDNQ-1 Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-5e11d438c1aso477506d6.1 for ; Wed, 05 Apr 2023 08:12:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680707568; x=1683299568; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NbqrRYoH4MhiCPZmKOq0P0xBbJ8jHZBz12BO3KGobG4=; b=EpdT0GfAHVDsdyjZK7y4FxoWOE42RJK062S5srEWsBFJStz5TKd34lLpZHkW0yChFT FWKpVXA4v2RZu4/pKc6mT0J6dVZxIvEz0yWinobPhYz1efNieFcAs4SI+ijS0+IPa00Q LmJQcgP1aTwJ7qDLa4AFFwIv5sqKz3E3XEYrRziPLOmoGl/hNIVlxAivUNz26g0toLMg IX6BmzrYClCJpKWZYButQeZgd1r+Fl8AOsuhb/i030D4s2Nchxc9N/+M7xM+UclcQdsh 7hbV1jl9V82ORJeQYOeqy7MU40j1cFtsQdgnDNLU5RC7AT+hNPTSEQjEjFIxXawgsUhx uJkA== X-Gm-Message-State: AAQBX9f/32TUZFijQDJ4x1n1OPNUg2XW7vJ223f1Qz0nsELEv2TXirF+ 1XJuxVaaAw5EZCLf1iAdwVLc2vRonjlCn26k0qbjs05obX/UdxS/CGzneK/vuCLs1O5PYx/JnU8 kwr8CiFwiKFE= X-Received: by 2002:a05:6214:301b:b0:56e:f7dd:47ad with SMTP id ke27-20020a056214301b00b0056ef7dd47admr3957923qvb.5.1680707567606; Wed, 05 Apr 2023 08:12:47 -0700 (PDT) X-Google-Smtp-Source: AKy350by4BvvddzPNID9g4CfXiEnFFWgAOu98t+35+GTR4I/ubHIFckRRQCBVh0oqa/OjDU9n4zG4Q== X-Received: by 2002:a05:6214:301b:b0:56e:f7dd:47ad with SMTP id ke27-20020a056214301b00b0056ef7dd47admr3957888qvb.5.1680707567230; Wed, 05 Apr 2023 08:12:47 -0700 (PDT) Received: from x1n (bras-base-aurron9127w-grc-40-70-52-229-124.dsl.bell.ca. [70.52.229.124]) by smtp.gmail.com with ESMTPSA id d4-20020a0cf6c4000000b005dd8b9345d5sm4200768qvo.109.2023.04.05.08.12.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 08:12:46 -0700 (PDT) Date: Wed, 5 Apr 2023 11:12:45 -0400 From: Peter Xu To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Muhammad Usama Anjum , stable@vger.kernel.org Subject: Re: [PATCH v1 1/2] mm/userfaultfd: fix uffd-wp handling for THP migration entries Message-ID: References: <20230405142535.493854-1-david@redhat.com> <20230405142535.493854-2-david@redhat.com> MIME-Version: 1.0 In-Reply-To: <20230405142535.493854-2-david@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspam-User: X-Rspamd-Queue-Id: 87004C0011 X-Rspamd-Server: rspam01 X-Stat-Signature: 5z76r59z6db3p97f9n7jp4h6ro6wwemb X-HE-Tag: 1680707570-735675 X-HE-Meta: U2FsdGVkX19/NFcpR0Q5n0LZFdCUpMKd5Ogcny+P2OHL5iP69O5idRgibWkc6mC9Mkmw3V+gN78gRM+MrLAVaU07j7KRxFRtsOSmk6YtcFRM19RkoySuGIj/T+GZs96sJwyOkuLEwmeI9Rx/ZZMeagehZ4Irq76gpHqrX3IGgaJ5LgoQ+/zq0Kuekm2429odFT6BY8oCJfHsrkglmRju6PKcYKlnv5raTDTbuvrUt4W6Hhix4XWgXE7pFnDbEMtqNJjcs2hhqrVBx6iNOAMnueHRAaklgj7tRoVk6fL9LT5waItUDwdYqrcd/xJTzKVqKGldZFQbnICFdJXnE+/JFX72Nts4Imh9EJA4wg/eHqzQVvnBTxiWdS4OzREhY9uhXJlJGIW5xBENYr6j3AP5M8VKhDWGEmObjsbfq2HkxrUiwYKtFTdbhnINojvXt9c0XZGevfN6Gmcl+1B4NgJJJHGnlyTHbvsCcPRRawXzG35bo2yx69ixDCv8LsiNahgeZU95P8pi5+6Cgnq3otbjBx9IGK5K+v2vUVdz+zgrJy74v5F+IX4hsRwRPYuUbZpm0/UIaX+DNHtW0wiUXXMZHudkzT6ldpJakGwtCCkiMQ317ad39nMaeNb4mSAFkYbwOn7Yqcr1UQA1mzsvOBMbrkilygZoPK9tBbFogun7vVrjDP0UIp58fUSr7DZ5iqp9zdyklNxKQMUaYSfiefJMa2uGoIm6178pxoH+nnRn/fj2apjLj0trCb+laOxMF/NoH9yud+NlXM4okW7sXbCV3GuhGWZqa4YCLI8UAZ/4AO+j5VgFVj0Wd2Rz0SrzNDPr/SSevpjtiuxDOd2kTKTykO9yfKnIAzRKxSNiMnM13rpB5zj5q6ZtQM7AG2YCgHFoBZdc5hUYAUpJy5pLW76dWxbaToRnJ/IMHFWgyOdTQMx1Hvwpp7nQb9PGxqcLRlH0lKrKsiT/Cefi6hG9CrO jNnJ+Hv7 h1v+jU/bpG45pN1K6jKxru/gycEcXEblcXZCmv1GCx0p6dwjiyaUwVy/Rky5GUsSbAt5G0XBDhpFn/yWLUKB+oZIlFF/7bzaSEeKpaiIzkIGqZKy+hn1rAaPRJ7Ld+dpz0B8le6x2i7ATSa/Y2rp3d4YcZ6LnIqwMoEW8r21PZ/6Sr+wfHgBg2YP1ihkLP+QQmnoyoGxKQ2rlWJbneuiNe41e4yMt65sz3JKmjXLGZgRgn/D0npb4d4wR8jUeGgReVWkRd+Jxl5FPmWIhVTzBulGsTxQqYfeWIGm8Xr7RrGvBjjfkxE7D9Z6Ocg5psubCxkl3dT9cXtKgckyNZOZR0JpGRGVj2igzEu+0BUp56UZLqxZti5isRMvFdA+l20vnTVAt4VrsEsn7BCpTSnNjjAGBCQ7UncryDvoimUDUgS5sCSdTee6VmTLJtoqRxIvYrpW2tUNSjabM20o= 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 Wed, Apr 05, 2023 at 04:25:34PM +0200, David Hildenbrand wrote: > Looks like what we fixed for hugetlb in commit 44f86392bdd1 ("mm/hugetlb: > fix uffd-wp handling for migration entries in hugetlb_change_protection()") > similarly applies to THP. > > Setting/clearing uffd-wp on THP migration entries is not implemented > properly. Further, while removing migration PMDs considers the uffd-wp > bit, inserting migration PMDs does not consider the uffd-wp bit. > > We have to set/clear independently of the migration entry type in > change_huge_pmd() and properly copy the uffd-wp bit in > set_pmd_migration_entry(). > > Verified using a simple reproducer that triggers migration of a THP, that > the set_pmd_migration_entry() no longer loses the uffd-wp bit. > > Fixes: f45ec5ff16a7 ("userfaultfd: wp: support swap and page migration") > Cc: stable@vger.kernel.org > Signed-off-by: David Hildenbrand Reviewed-by: Peter Xu Thanks, one trivial nitpick: > --- > mm/huge_memory.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 032fb0ef9cd1..bdda4f426d58 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -1838,10 +1838,10 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, > if (is_swap_pmd(*pmd)) { > swp_entry_t entry = pmd_to_swp_entry(*pmd); > struct page *page = pfn_swap_entry_to_page(entry); > + pmd_t newpmd; > > VM_BUG_ON(!is_pmd_migration_entry(*pmd)); > if (is_writable_migration_entry(entry)) { > - pmd_t newpmd; > /* > * A protection check is difficult so > * just be safe and disable write > @@ -1855,8 +1855,16 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, > newpmd = pmd_swp_mksoft_dirty(newpmd); > if (pmd_swp_uffd_wp(*pmd)) > newpmd = pmd_swp_mkuffd_wp(newpmd); > - set_pmd_at(mm, addr, pmd, newpmd); > + } else { > + newpmd = *pmd; > } > + > + if (uffd_wp) > + newpmd = pmd_swp_mkuffd_wp(newpmd); > + else if (uffd_wp_resolve) > + newpmd = pmd_swp_clear_uffd_wp(newpmd); > + if (!pmd_same(*pmd, newpmd)) > + set_pmd_at(mm, addr, pmd, newpmd); > goto unlock; > } > #endif > @@ -3251,6 +3259,8 @@ int set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw, > pmdswp = swp_entry_to_pmd(entry); > if (pmd_soft_dirty(pmdval)) > pmdswp = pmd_swp_mksoft_dirty(pmdswp); > + if (pmd_swp_uffd_wp(*pvmw->pmd)) > + pmdswp = pmd_swp_mkuffd_wp(pmdswp); I think it's fine to use *pmd, but maybe still better to use pmdval? I worry pmdp_invalidate()) can be something else in the future that may affect the bit. > set_pmd_at(mm, address, pvmw->pmd, pmdswp); > page_remove_rmap(page, vma, true); > put_page(page); > -- > 2.39.2 > -- Peter Xu