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 2443ECD5BA9 for ; Thu, 5 Sep 2024 10:56:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7E9136B035F; Thu, 5 Sep 2024 06:56:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 771FF6B0362; Thu, 5 Sep 2024 06:56:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5ECC56B0360; Thu, 5 Sep 2024 06:56:24 -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 3AA1E6B035D for ; Thu, 5 Sep 2024 06:56:24 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id DA60AA0AEB for ; Thu, 5 Sep 2024 10:56:23 +0000 (UTC) X-FDA: 82530380646.04.59F4D7C Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by imf15.hostedemail.com (Postfix) with ESMTP id E2355A0019 for ; Thu, 5 Sep 2024 10:56:21 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=PiTb6um1; spf=pass (imf15.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.51 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=1725533705; 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=4DJPppfvsq3bVrU8OAZnr57xaqKDJESryIS8WamVFSc=; b=n5tnlILYWqKrIz6tKdVFVOnH13WPgCuJiQapPih6tIexUk33vJSWrOFS1nnNveCcWBiwJ2 WYW8w4oMkyIffFHtyV2X+/1kxvWlD94ZX4IfSzA24CrLLT9Nk3k6mbzA04sdS6etizzAQ8 lw4s7X/ZHwvd4SOAL7kpph6xt0RT2mI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=PiTb6um1; spf=pass (imf15.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.51 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=1725533705; a=rsa-sha256; cv=none; b=GNHVs6bZEcX8+b9f+2+FrW1rbzQ11GsARgV7Y+hcNpC1svY3OrRxFRcnMBSd88d9f0XmiZ BRQPBu60pQk1fY0xHJ+DFOv7v9ANJ1/bt2x1Lk95HODPymOCNmtF2lM/FBEF6/iB3/vuMg cHDs9U02JASX7Nyzqod3lmrhuJpqJAo= Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-2d8a7c50607so410642a91.1 for ; Thu, 05 Sep 2024 03:56:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1725533780; x=1726138580; 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=4DJPppfvsq3bVrU8OAZnr57xaqKDJESryIS8WamVFSc=; b=PiTb6um13dqgSW+mv9df0wNPv1Ol7rZKFMbc9tw2j2BI5NeS8VZ4Zo5f5/rxihMR/w 8jPK80GRGDxyZzmbm7FNy05Z/G/vyFHaDFYKNYPe4a0ja8v5436g/m88DNOqgxDlzopw +epE1H8aY0ANmns2teQ/3N6nmiByGNnEDJbG7S2jdN3t8XHvlK5NGa1TDH4MrDF8cMkw zRVYPjCKRPBopl4VNtDN1l7Ex88vaAYyD7c/ceFiAW6mMC2HSX4pr5kjnAW34KioDJfR ImnU670hmqfWJtjvoilXmHxqQ7rSZSq6u50zj9lWlvHg8/mFvx/wCTNmff7NjfNv1ymV 6KyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725533780; x=1726138580; 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=4DJPppfvsq3bVrU8OAZnr57xaqKDJESryIS8WamVFSc=; b=bZB4qhLO5rDiHXFTf4lpQ8gb2YS6ice8Z2wnCUMZkwz3luoUqpOnCBQVKdVX/rupBZ 2nrcxzt4Pj/6S06P6RcKBQRvY78Lg80ck4noYMISCnjjY9l2ui2PO9P0uU17l3VI38rY Q/kFK0cDLmZQO4nmupZKvnjEhlC/6EN7Y7ne/Fo4EiBizxqYyvbxGPGbV3Rd+ZCUBF5e AUCKTnh7wrqmCxZmY1sNynnwxq8DF3rW1+WnraZmT1+O5cHf43tCPBqh03lpntKFlfvk yQxGy5ZNb90TK8/QHgpGxMr09Krl5StmQ5RrnSHyXH6lUCnK8MXYzfxqnU+YG96MzFP6 mDGg== X-Forwarded-Encrypted: i=1; AJvYcCXtInVznDqBmq/KdJFOypjzrW6Zh7m/OTsZxuGqQ2YIrE09gp8QInteOo7jPzWaw0yQyOH7ynHkMA==@kvack.org X-Gm-Message-State: AOJu0YwgyKjYHVE+Q6VAXmT5qUyP7UNB6DWxAAdGR25Av3M6OMK2a6j8 uRNw8NhxNe51Yw6OEOo16vZNvimy21iGsGR4UW5DaIqKEx6luh2csHO3Mhni7oA= X-Google-Smtp-Source: AGHT+IHilYsBgfadCapwrPljiidrpCa41K0Hyb98p/0x3xNpGLLwKBsqtfV83jJC0DRLwz+P6VWrRQ== X-Received: by 2002:a17:90a:de8c:b0:2d8:7307:3f73 with SMTP id 98e67ed59e1d1-2d8906204f6mr17130275a91.39.1725533780409; Thu, 05 Sep 2024 03:56:20 -0700 (PDT) Received: from [10.4.59.158] ([139.177.225.242]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2d8b8fe1f68sm9312094a91.31.2024.09.05.03.56.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Sep 2024 03:56:20 -0700 (PDT) Message-ID: Date: Thu, 5 Sep 2024 18:56:14 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 09/14] mm: mremap: move_ptes() use pte_offset_map_rw_nolock() Content-Language: en-US To: Muchun Song Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, david@redhat.com, hughd@google.com, willy@infradead.org, vbabka@kernel.org, akpm@linux-foundation.org, rppt@kernel.org, vishal.moola@gmail.com, peterx@redhat.com, ryan.roberts@arm.com, christophe.leroy2@cs-soprasteria.com References: <20240904084022.32728-1-zhengqi.arch@bytedance.com> <20240904084022.32728-10-zhengqi.arch@bytedance.com> <1b03a7de-1278-4e36-8068-885dd1c29742@linux.dev> From: Qi Zheng In-Reply-To: <1b03a7de-1278-4e36-8068-885dd1c29742@linux.dev> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Stat-Signature: zrg3477qr5q1pn84ttwo4z17yh45bjda X-Rspam-User: X-Rspamd-Queue-Id: E2355A0019 X-Rspamd-Server: rspam02 X-HE-Tag: 1725533781-621676 X-HE-Meta: U2FsdGVkX18EZO52GCc+rWeb4MjOH/c/Docj651kxGeghlgNwvFxLVw9Bi4s7rNGuKPdWSTafdwwJO5l2klBVQQIOjBHAeULAk7tFgUi/v65hKFgfy0tU74SfXg/NoYFTBB9JdJEiHGdWQexxIZzHdxcijbXrbf3GMdOipsK0H05F0KPVqJ5M3rbsIbKLGF6LfxaxFt9EFhvL5AEG+x6r2BavdONvP58fvc1BUUTJHN8PYqRVrw8/nce4h8+88KWD6SnpAwiW/d9antlRqFiN2VamVjPiELywA9cOicpaAqTB5Fzd4lk5ghuK2zZenXnOd4ctINX2G7S29heXn5T1p1PgtIufvA3HMsCKP/0Jh5eUDFBaKiWNfgtXteUJRYWe34MRPFeDGY+nO5snsCfXidiudfhCwVsmebtE6gIZCtqhDyYTXIdDnKHmqIvleudRTB3zphyqlnrmbng8EcZwojzvZ7h/sVa0Kmz3h87c+pHVIJFDBcOnSLxAU1bqjbuMa3tuEKWNgQixfXQpozkFjr1zyG+VM9HgGg2SEjvArpboaJSWm4uC7zNYRWuRMF0Mum3Kt1e8r4oKzVdUxuPhZz4FpS81JNGkQfauQuiKwPEYmQxVHT+oIKeZR+/MEWp+ZNbWmJvGjFIweaS51ovUz14PjkrAGEnOgR90G+CYeJg/Y+RuuBwKZIzVRq5v0eAkz9WygAXAGtkOYAhtxS6EdOTSRumHuHKC5jB6sxIpw/s4sI0VHBSlfcpFo8dRJh0XekhzHPNby3Mt9XeGBPhLlM06zwW5OK3RRyolt0PicFTdfR6NbdUuTKU0jO50y2sw3glsO5swePZVGbvh8lDtAjXSHNb0z4/EMZuKfMSxptPgc88Rc/3EAei/fcBi1qrEWkC48Rx+v9+JYBXlBugBcOFJKPeiwf4IP1wQUlWt4ThV9+TIpDOt2YtQ1Ev1UwJDitwrEzITKPZbmUYQr8 CWPzDi5n vY4LgJf3Mu2I0qja8DFStKQRulJxzOIzd83ueKgCgvuJG2aSbRQjoslFOwTelNCPinjNoUrJPhmtHEV6w/tAu5MlzSt3sNhyVMfHIRw2BZLicIhkQYgQpjNxecNPZPy+wC45YmdMFMEwy/ed+uHUQfvHLMyziOR1PjBjqtRuLvhl10/xwVjI/xzmmq+kZbewPCS9GspDmZHeo3oJ0sIiAQH/A5Va+6yosjDI7yKgVGPxPhPhRgFhgNfs86G7nInctah3+v15AwIpx86TrHYv/2kziF/7Bo3e9YrUUcQfgXsj3jkcsZf8voAm/O9BuDsm80FsqDpj4xfWeCJ38hdHFsvawnQXgHzYnhEXeFwlj8/W6pjtPNvXWPHk6JzPvvjWy/3XQUFLgVGwS3U4feQJLP+mhSk+R1fSO9Z6MEO7v8R2/Or+mJAIb7Ylid//vIAOBCptWmfBV6GLg+iHz5kL5vpxQq9mfCsI2OzkEkzX4VgS1zsAAMYvE+bThzQ== 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: On 2024/9/5 17:25, Muchun Song wrote: > > > On 2024/9/4 16:40, Qi Zheng wrote: >> In move_ptes(), we may modify the new_pte after acquiring the new_ptl, so >> convert it to using pte_offset_map_rw_nolock(). Since we may free the PTE >> page in retract_page_tables() without holding the read lock of mmap_lock, >> so we still need to do a pmd_same() check after holding the PTL. > > retract_page_tables() and move_ptes() are synchronized with > i_mmap_lock, right? Right, will remove the pmd_same() check in v4. Thanks! > > Muchun, > Thanks. > >> >> Signed-off-by: Qi Zheng >> --- >>   mm/mremap.c | 20 ++++++++++++++++++-- >>   1 file changed, 18 insertions(+), 2 deletions(-) >> >> diff --git a/mm/mremap.c b/mm/mremap.c >> index 24712f8dbb6b5..16e54151395ad 100644 >> --- a/mm/mremap.c >> +++ b/mm/mremap.c >> @@ -143,6 +143,7 @@ static int move_ptes(struct vm_area_struct *vma, >> pmd_t *old_pmd, >>       spinlock_t *old_ptl, *new_ptl; >>       bool force_flush = false; >>       unsigned long len = old_end - old_addr; >> +    pmd_t pmdval; >>       int err = 0; >>       /* >> @@ -175,14 +176,29 @@ static int move_ptes(struct vm_area_struct *vma, >> pmd_t *old_pmd, >>           err = -EAGAIN; >>           goto out; >>       } >> -    new_pte = pte_offset_map_nolock(mm, new_pmd, new_addr, &new_ptl); >> +    /* >> +     * Since we may free the PTE page in retract_page_tables() without >> +     * holding the read lock of mmap_lock, so we still need to do a >> +     * pmd_same() check after holding the PTL. >> +     */ >> +    new_pte = pte_offset_map_rw_nolock(mm, new_pmd, new_addr, &pmdval, >> +                       &new_ptl); >>       if (!new_pte) { >>           pte_unmap_unlock(old_pte, old_ptl); >>           err = -EAGAIN; >>           goto out; >>       } >> -    if (new_ptl != old_ptl) >> +    if (new_ptl != old_ptl) { >>           spin_lock_nested(new_ptl, SINGLE_DEPTH_NESTING); >> + >> +        if (unlikely(!pmd_same(pmdval, pmdp_get_lockless(new_pmd)))) { >> +            pte_unmap_unlock(new_pte, new_ptl); >> +            pte_unmap_unlock(old_pte, old_ptl); >> +            err = -EAGAIN; >> +            goto out; >> +        } >> +    } >> + >>       flush_tlb_batched_pending(vma->vm_mm); >>       arch_enter_lazy_mmu_mode(); >