Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp668096ybv; Thu, 20 Feb 2020 05:19:33 -0800 (PST) X-Google-Smtp-Source: APXvYqw7gGTXbzt+ouVLFd8jrhpesFox8P3fIUjyTSiLJLFIkZfBrpoEfnKMIwzgD6vzZi4DePXQ X-Received: by 2002:a9d:1ca3:: with SMTP id l35mr23048394ota.271.1582204773150; Thu, 20 Feb 2020 05:19:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582204773; cv=none; d=google.com; s=arc-20160816; b=DiS675w/RP0VP81yhVJmipPpNC8rIPpj8USGVF4IVxHlkA2Zdu0bE4vAcmsDcQBjZd 0xJ5/m3nxyva65bgcuYbdvAcZ60gOxiG+a58I+vXlbjps4qYag318F5WrvvfGZY5vgf1 iK2oBrLlA05GSCjaTTGSqXlkttscC2Fq1T2JMY/lC9vLJbSWYtEz1RH3gs9SS6VCzWNe RdTs70A30zc3YFvv9G+H5frN8dU09Kz7jmpnDNigLPvBY6vhW3EnSk6JpeHomqVQMoTb NdKy60v6VTo5XOpKlYeBZttmZzQD2AAf/XZ+eoqx4vZo0B2jGEomJ4t103S47lWYYRe0 PC+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=ia8C50FcJ9IqTIPFRX/pHZ9Hj3Et0GVBStcW+vilTEY=; b=jZZqF80Yg3o8mAA25nSXrNrEI10/9nHcrrDlOEvI93ClWTmXpWWXTBrPhfQDUfEFaS ye4x/i887zxFT0Q+sAR4J/OXHR4r5uKwd/7FEqiTaxUWRM/1gqcep9M+V3E0Nrk5NbDs iMA+EB1KhRf6UNBUafIzR9Guh+cIWri6Xxsbh2NhcBvBdxOkvc7qW/vKGSLOUThiiu7A deqMR2lMV+S6FLzYOfGnPEyRRCEprc59FJc2N/UXsvLNErikRCq+eFnUklKvOZuNULpO Fv+7l9ye9Lifx5IdOGv176GwudUdgDNPuLZsYQKPUnjnmvSLg8GSdcc2u/gaLdSaxtQd YN3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=eNYosroi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d26si1626820otc.6.2020.02.20.05.19.20; Thu, 20 Feb 2020 05:19:33 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=eNYosroi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728185AbgBTNSy (ORCPT + 99 others); Thu, 20 Feb 2020 08:18:54 -0500 Received: from hqnvemgate24.nvidia.com ([216.228.121.143]:19949 "EHLO hqnvemgate24.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727953AbgBTNSy (ORCPT ); Thu, 20 Feb 2020 08:18:54 -0500 Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Thu, 20 Feb 2020 05:17:41 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate102.nvidia.com (PGP Universal service); Thu, 20 Feb 2020 05:18:53 -0800 X-PGP-Universal: processed; by hqpgpgate102.nvidia.com on Thu, 20 Feb 2020 05:18:53 -0800 Received: from [10.2.160.62] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 20 Feb 2020 13:18:51 +0000 From: Zi Yan To: "Huang, Ying" CC: Andrew Morton , , , "Kirill A . Shutemov" , Andrea Arcangeli , Michal Hocko , Vlastimil Babka Subject: Re: [PATCH] mm: Fix possible PMD dirty bit lost in set_pmd_migration_entry() Date: Thu, 20 Feb 2020 08:18:49 -0500 X-Mailer: MailMate (1.13.1r5676) Message-ID: <51A5D10D-0ABA-4FA2-A749-EBF60DB4FEE6@nvidia.com> In-Reply-To: <20200220075220.2327056-1-ying.huang@intel.com> References: <20200220075220.2327056-1-ying.huang@intel.com> MIME-Version: 1.0 X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) Content-Type: multipart/signed; boundary="=_MailMate_EFBAB02F-7B4D-42C6-BD8F-4DD342D56792_="; micalg=pgp-sha512; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1582204661; bh=ia8C50FcJ9IqTIPFRX/pHZ9Hj3Et0GVBStcW+vilTEY=; h=X-PGP-Universal:From:To:CC:Subject:Date:X-Mailer:Message-ID: In-Reply-To:References:MIME-Version:X-Originating-IP: X-ClientProxiedBy:Content-Type; b=eNYosroi46W+zx8zsp1OtVS6ILZzDW/iAZHv00QPonKlRd9u/3lAW1OB49/bAfd8Y mOuo5+A+VaurchlLr1UD7/hEqc0oNoB2fJKX0vE7r/6AwW9hJur36lpnwcL0ceBTmd 0pfgWaS+kktCppKn7ibyslh8bv+3nK+1YuNgayW70MTmgLwoQX0MB07HPrGNennver j/s/KsjurG0LIOV0746RCTeuJv/R2BOaj9OAySwycML9q5NBDaDw5XBervQUORXOOu b7ylJMV5eSckq6nhGwvY3mK6jBG5QzUumXNdHg8Yv42RRa0wUjwbs/HIWpISA+c8NG W2GvzTowuUdEQ== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=_MailMate_EFBAB02F-7B4D-42C6-BD8F-4DD342D56792_= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On 20 Feb 2020, at 2:52, Huang, Ying wrote: > From: Huang Ying > > In set_pmd_migration_entry(), pmdp_invalidate() is used to change PMD > atomically. But the PMD is read before that with an ordinary memory > reading. If the THP (transparent huge page) is written between the > PMD reading and pmdp_invalidate(), the PMD dirty bit may be lost, and > cause data corruption. The race window is quite small, but still > possible in theory, so need to be fixed. > > The race is fixed via using the return value of pmdp_invalidate() to > get the original content of PMD, which is a read/modify/write atomic > operation. So no THP writing can occur in between. > > The race has been introduced when the THP migration support is added > in the commit 616b8371539a ("mm: thp: enable thp migration in generic > path"). But this fix depends on the commit d52605d7cb30 ("mm: do not > lose dirty and accessed bits in pmdp_invalidate()"). So it's easy to > be backported after v4.16. But the race window is really small, so it > may be fine not to backport the fix at all. > > Signed-off-by: "Huang, Ying" > Cc: Zi Yan > Cc: Kirill A. Shutemov > Cc: Andrea Arcangeli > Cc: Michal Hocko > Cc: Vlastimil Babka > --- > mm/huge_memory.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 580098e115bd..b1e069e68189 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -3060,8 +3060,7 @@ void set_pmd_migration_entry(struct page_vma_mapp= ed_walk *pvmw, > return; > > flush_cache_range(vma, address, address + HPAGE_PMD_SIZE); > - pmdval =3D *pvmw->pmd; > - pmdp_invalidate(vma, address, pvmw->pmd); > + pmdval =3D pmdp_invalidate(vma, address, pvmw->pmd); > if (pmd_dirty(pmdval)) > set_page_dirty(page); > entry =3D make_migration_entry(page, pmd_write(pmdval)); > -- > 2.25.0 Looks good to me. Thanks. Reviewed-by: Zi Yan =E2=80=94 Best Regards, Yan Zi --=_MailMate_EFBAB02F-7B4D-42C6-BD8F-4DD342D56792_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEEh7yFAW3gwjwQ4C9anbJR82th+ooFAl5OhzkPHHppeUBudmlk aWEuY29tAAoJEJ2yUfNrYfqKjrYP+wRxjEtsawolB0Qpu1nGeCQaY62q6Ow0XfrE 86x1IysDD+KB1PFZskbi3Ju/uwWtnKXNDam1Uh1onWzCs6oBT1vuBuzUkHFRfRa1 B0ZEflHKkCX0Ns1s567TUNBL00uxFUVIcDazppXTozHyDnnAXyD0IeHlJIRasglj XqZYwFs4QD1LBZsHd6RSzFqP5iOoWdYn4LzMlTWoJF3sxup9ARpthb89gfNlIgMU xCuHeenQsDLVJtfq48qiK8yVyLTx0DMjCdbz2/VENOJmTvNEalY7F5V/4o/I3GMy OTQnwu+oy74ovXA6ZFYsvHogqs/M2bzNAfF5UHP7HKNLkn1eMG0XL6q/HXymESoQ w+yOVRrv+KoyQ8dB+7Vlw8ZXjUTh2LjjWhS2/AhIKkskDO7IiISU9rCFtR4x5twI +hpmwnjmIIbJxEjcb9AsmAezW64n3ZMduf9SJsdIyumT7K5n3WTjf+1FQiN4TUMF AjovWJdhIRiY3iPVuBw1khiCB1UO9H4ISWvRWhHEyMuAmht7De9fn9Mo6A5GGHrA Y9yvHCqSAluoptFDaJwemUvO2WxIEAgoWxeQF5uhjNsUcBu2cnXd2Sm+fARJMZxF Kabw8mVOu9+bn7LZGnh/QjwsK15lyC4WULedD8Wbhwe0CnOJ53uTCteeKS1daHtr D5e/tIaV =T38A -----END PGP SIGNATURE----- --=_MailMate_EFBAB02F-7B4D-42C6-BD8F-4DD342D56792_=--