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 26C0FCED263 for ; Tue, 8 Oct 2024 03:53:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7C8096B0083; Mon, 7 Oct 2024 23:53:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 778076B0085; Mon, 7 Oct 2024 23:53:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 63F2A6B0088; Mon, 7 Oct 2024 23:53:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 47D6F6B0083 for ; Mon, 7 Oct 2024 23:53:35 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3E7B11406D9 for ; Tue, 8 Oct 2024 03:53:34 +0000 (UTC) X-FDA: 82649065548.04.ABD3CE9 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by imf04.hostedemail.com (Postfix) with ESMTP id DFFD440009 for ; Tue, 8 Oct 2024 03:53:31 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=jlTo3IKS; spf=pass (imf04.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728359544; a=rsa-sha256; cv=none; b=Is3GqczrXZq97qDZL9Lo7vDtHmwxFGF/6+EtVSwrQ5EDX0JBtjB1bf/0oqQj21/jNdaZt6 QDx198Omx4mmbrzK7o5flaEe6t5Vvxjb7xjSkcexvWGUuH4Gp+AVTgTntD4Uc/YltDGG7j rKZAm1H0Yss2NvH+KAsX5Msc+nOtYEA= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=jlTo3IKS; spf=pass (imf04.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728359544; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=bZmM1kivjY+OP9fhZeIHR6lGq4KOb7jxhbJjcjvyqC4=; b=D4daqvoCqJrBeev2eTvKX4gLDKhBEmWy5Nxi3OjqNle/xW5+o0cBU3f3zC7bNtjwfjbu5i JVsdC8202xO3olw4jUdOCjbxqifxtTV97QZwJqwGTUzfDFYNBtjCiWN18Nel5r2iAstys3 bqdW4iOG5zYEkI+hO5kUn7lVn169Du4= Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-7e9fd82f1a5so1475887a12.1 for ; Mon, 07 Oct 2024 20:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1728359610; x=1728964410; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=bZmM1kivjY+OP9fhZeIHR6lGq4KOb7jxhbJjcjvyqC4=; b=jlTo3IKSyj8thuvPsKzNiZvg4jp9KdRQbfgvpaH4hM0UE6A8wB1XKgXYXhaMpXMKW6 3Oeng2f6Dcq080+uPkk32DvDIrsx4w92b3pIBRm4TBQlv9WEiDeEf6HgS0GttkdHsmwI XFVPAZxdhD241tLJc1y+YtaRF/htmSPY+XKK2YUK5JxS7vJyGMvDgEyJs6NJxPGUrGRv TkiIRy31PNG2OY/Iz4FvV1gB3fzZGT8QR2/e7zhNOp2u9TkvMPM3QyAIWjy2lAi9X8E2 9720/QdM0Pd6MwqIbrK7o/rPHTjZoWmybhIjznQIKd+pLCmIU0A/TbWFp4rlSflv0GRG Pqrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728359610; x=1728964410; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=bZmM1kivjY+OP9fhZeIHR6lGq4KOb7jxhbJjcjvyqC4=; b=NPivv3LPMX7Fw6foQnyvrieaKOx/ZPoljjZozRCxekOVKssJVkyooug125zcJg5MQx I2ioBJmmDzvDxsTRBs8co+Oz7bGeC4VA+19XJzaVpk1tmgZ/ONPrrSO0pqUbT8EqqB0V vz31Pr8tthyYc/UkZXkraN4zmhqmSDad/wV3trsUcjm1LpND/Qztz/9V86Zr6WPONvO7 zAynxZdfnKKJRA9xQ8UXpeY/dXOsqUhTpW8IaSOAyglIv7Mr4QKL9ArTyWn2aKDllyuK jJmKNIAjze3Exb8ZFo/hIy1qDaelYNfVcbT2EiN6zzDT2MMIXsYxi/6BwfAfvZo74A+v ymkg== X-Forwarded-Encrypted: i=1; AJvYcCVO6bAQ57vupHVIWHg5qQhef4AmY8mtqdZ6qdt/seTtPxpjvqrxEOFUO/CTdOyIux1qMXtEW8qxtQ==@kvack.org X-Gm-Message-State: AOJu0Yx7z36LgO2CAsyEMZvzoi7KBwQVoyL1NYM/AV4rlUPnOFLLOMk7 kNlxboyVwB+Cd5cgxRAPrdcNP+jUw6j3UW/JF5jxMzi2KoYga7WsJuUN+7BHshtYLZIJKPN+AqO u X-Google-Smtp-Source: AGHT+IEKN2Kdq3MW9os/92sJ7powcTTKtvPCz4qyJxzSGTfT7D+tIcgPx2zAUwMNJC9bB5QI33ZTzA== X-Received: by 2002:a05:6a21:38b:b0:1cf:4c70:f26f with SMTP id adf61e73a8af0-1d6dfa3a765mr20221207637.17.1728359610462; Mon, 07 Oct 2024 20:53:30 -0700 (PDT) Received: from [10.68.125.128] ([63.216.146.178]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7e9f680c732sm5718701a12.12.2024.10.07.20.53.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 07 Oct 2024 20:53:30 -0700 (PDT) Message-ID: <1c114925-9206-42b1-b24b-bb123853a359@bytedance.com> Date: Tue, 8 Oct 2024 11:53:23 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm/mremap: Fix move_normal_pmd/retract_page_tables race Content-Language: en-US To: Jann Horn Cc: akpm@linux-foundation.org, david@redhat.com, linux-mm@kvack.org, willy@infradead.org, hughd@google.com, lorenzo.stoakes@oracle.com, joel@joelfernandes.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org References: <20241007-move_normal_pmd-vs-collapse-fix-2-v1-1-5ead9631f2ea@google.com> From: Qi Zheng In-Reply-To: <20241007-move_normal_pmd-vs-collapse-fix-2-v1-1-5ead9631f2ea@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Stat-Signature: kteqqq58j1wbpw5k9uk98xj7uk8edqbq X-Rspamd-Queue-Id: DFFD440009 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1728359611-619360 X-HE-Meta: U2FsdGVkX1967xIM3zS9N553zvJhSCjRz7bB8DEMpimTwTh2i1d+aQxzq3e6QKnHqFKMH98ZhmOeLnZbJUVD+R3sz/7C0T0OO0f0z08Y3w7AXYq+EqTbX7honP8wI6g+kzIcn5Ani/XmxvntadUGOFobRS0OTpRH2qjQgwoh60po7jejX07OLhuDnXDige6kRwzr+1yx92bQtdFu9fyIX7bWnIVvjXoJQHHuKNxzOZK8ys23SxtWJtJX7HhP7TtSgLZl405l9HIDVktnDH979AT9XzINtRrGZbRuToc3iTHDptXYBrcYuJTOOYkSnSVmG5FqfzlRHpteQlDZ4BvxqbRK5XFvCmhIjCCGnJh1+EAmR1EkCqsPT9BzMU9SDisZB2qqNikR7g9U9lh7o2S9H+wUiODyfAcrWTX5dKRQ2IoYK3+Rsve785EizN96sgH0BtPqJ+rSRkajw1X3lhEX+DgrcGlK7c7Li9XtuBr6ZFQd+k/DBh/1nZiArSqb2XiqjhyM4wK9InJ7jTVtNZRXSbsF5K+j2+9LlwanlI0Wat40Z03CxwmLqyp0sydXHi/GTBPoG7U+9DdVGtmayWZkxHtxAFChRyHPume6p4WJHwnMxIn+/PSb7cbW8EUPjF9F7adZY0Jqu7Mp4Pn7G6QS/lvX5yussBFvAnUMD6E1iWNVc9HEhTMUFLXljP2WdHfjQ4qDT6gLw4dU30tgzr79IIZwwT3XUa1NAcJxqolLUzyReGW+v3rzRwAz1KGLcgMkY5FiFrOz2E6MzCDV729Qqmoky0iK3cBzNeNfP6XoCm0f7hqscyLfW7nBKdc1FHeyvHmQ56vghuzQw683HcUrF3MvlK8bKAnBXVKQ+Pbp+hUxS7rRpf+eoQuBtTFbGSYfYoifFrZF2riE9nafH0wvB67/shnygPhG123x5MudDkCdndRwg2A5t6caftVNBSHi55g/H1qiVvzmZECbCxJ i/P4Mfq9 n7f04PhA2mHWWpoGOhe9DAer7tJzRqmFKueRg8YWsMQ02B6GxR9S4251X4uLbLsJ69ZBexBql5BCQri4MIW3gdXB7e4Y/4vIBwwTrrLcUdmrJmp/cHoolJ7UAkGzYWtwsfMNp5LQ0jkdbVnO3aotcpGAnQ3iHADnBKEsl+DrS3LA50+i6ntJ3/BsuQIz4K9qCdb7+6wqRZHFDvcxNUIluDs1gcXgkIHV0y5z52OtXEzgpEyLoQ0aJr/f/bzwNTO6nqH+pfDPGY2mq2FmtrVGydEkHVpsVr0t4YsauhOE79dDWQO9RDRdScHFILqsVdiwvIwT/iDgsTXgXQ6t3WbzulbRhVnedJ+5s3ZJw0NYuCdohujgFT89WRFWTfQCuEk1dtyjD 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: List-Subscribe: List-Unsubscribe: Hi Jann, On 2024/10/8 05:42, Jann Horn wrote: [...] > > diff --git a/mm/mremap.c b/mm/mremap.c > index 24712f8dbb6b..dda09e957a5d 100644 > --- a/mm/mremap.c > +++ b/mm/mremap.c > @@ -238,6 +238,7 @@ static bool move_normal_pmd(struct vm_area_struct *vma, unsigned long old_addr, > { > spinlock_t *old_ptl, *new_ptl; > struct mm_struct *mm = vma->vm_mm; > + bool res = false; > pmd_t pmd; > > if (!arch_supports_page_table_move()) > @@ -277,19 +278,25 @@ static bool move_normal_pmd(struct vm_area_struct *vma, unsigned long old_addr, > if (new_ptl != old_ptl) > spin_lock_nested(new_ptl, SINGLE_DEPTH_NESTING); > > - /* Clear the pmd */ > pmd = *old_pmd; > + > + /* Racing with collapse? */ > + if (unlikely(!pmd_present(pmd) || pmd_leaf(pmd))) Since we already hold the exclusive mmap lock, after a racing with collapse occurs, the pmd entry cannot be refilled with new content by page fault. So maybe we only need to recheck pmd_none(pmd) here? Thanks, Qi > + goto out_unlock; > + /* Clear the pmd */ > pmd_clear(old_pmd); > + res = true; > > VM_BUG_ON(!pmd_none(*new_pmd)); > > pmd_populate(mm, new_pmd, pmd_pgtable(pmd)); > flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE); > +out_unlock: > if (new_ptl != old_ptl) > spin_unlock(new_ptl); > spin_unlock(old_ptl); > > - return true; > + return res; > } > #else > static inline bool move_normal_pmd(struct vm_area_struct *vma, > > --- > base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b > change-id: 20241007-move_normal_pmd-vs-collapse-fix-2-387e9a68c7d6