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 C2CD4C5472F for ; Tue, 27 Aug 2024 04:53:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 404CD6B0083; Tue, 27 Aug 2024 00:53:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B4916B0085; Tue, 27 Aug 2024 00:53:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27BEE6B0088; Tue, 27 Aug 2024 00:53:51 -0400 (EDT) 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 044B36B0083 for ; Tue, 27 Aug 2024 00:53:50 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 95360A7A21 for ; Tue, 27 Aug 2024 04:53:50 +0000 (UTC) X-FDA: 82496807820.09.3722CB7 Received: from mail-yb1-f172.google.com (mail-yb1-f172.google.com [209.85.219.172]) by imf16.hostedemail.com (Postfix) with ESMTP id D6253180007 for ; Tue, 27 Aug 2024 04:53:47 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=CFlmVUS2; spf=pass (imf16.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.219.172 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=1724734385; 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=gL0CtwyQELiqJJaIVlxrXuLFauzAqYM0sY701FPxABY=; b=CCrajAvYEToZt88kSycXgwGCWQHIdAhVEvlsNKu9IkaP7LK1uL1BdYLZTZy7tsk5pmx94m O1DklY5AGWvgQPOFjc/c3FZRguIyB53aL2kupRHFp3ThqyNc7BzGGVvkAqN11BODDl3pNF FzyQU6VMId2hu7a0f4bGXY9xn7qEDZo= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=CFlmVUS2; spf=pass (imf16.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.219.172 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=1724734385; a=rsa-sha256; cv=none; b=KzzK85X0C7JCpMZGkHWYkq7TjTShIF9FI6pp/tjkTpgXKbxBLHOfHgeATLR7nHcm+9tqBb /Kagg/JqUd/cNhRAPA2mm1aUw9j6bNbv3/JdW0B6pgIl7Qg5ecXoVZygYCHHt++SFmzWpS ns6z6kiTw9RZW/lJt7P4VHpqhlT553Q= Received: by mail-yb1-f172.google.com with SMTP id 3f1490d57ef6-e0875f1e9edso4901559276.1 for ; Mon, 26 Aug 2024 21:53:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1724734426; x=1725339226; 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=gL0CtwyQELiqJJaIVlxrXuLFauzAqYM0sY701FPxABY=; b=CFlmVUS2t67XjlWIv6RmVUui14RCXRZ9qxeaP2heChzGW6jQZSt61mwFvj7qHm3z8L w/SwdqFxceTv9H3FE0qsCCBnep8v5bb9m5oNmc4+LeoMK/wssoWDLiMvGH1rIj/sGYSO EQYWYvrCkytqRrhgthjmqe9YbbewPdmEMAoEjlWri7c8Vo7GCJsd9Tkn5RPDqKNoZg+D Tb6/tsI5zF9M/DAcbWTumEVeLgttrKMKBqcygCXqutVQzXQwA2ElHYN4yzqDAJEsdT36 cLUBTkDBVJ1gREVQdfxqWNt6PmNKlRJ1S/QgU9lKgSKXm/aR8sNaqQheduysk9XIxELZ QeIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724734426; x=1725339226; 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=gL0CtwyQELiqJJaIVlxrXuLFauzAqYM0sY701FPxABY=; b=I5fxD7ZSnQsnxtu8LmCE3+qzEbk5/7Ql3jTE5YiSNhvgfPtUdst7myq7JzjphfjYUh QuNDJKDXEvr8puVRPLxC//+2qfZ5KXdS0e3VcL04K2qT83QpScjxnkcAjTwNKRKLQvAm QTlym5ZnfJBKjN878nIP6SEzZxyhB2ZITxHIdjSuYPVxbg+fEHXG52EnTJgdCCAF6s+6 OaoJ/A0vYjR0oqACOL7tlOZ8lENIQi933scNIUhCbcMWeQinuwL97QG6vKTZ2oUZwR2+ RS1S2Fb8N9HjDSjI7OK34/Bw6H0XWvl/i5sxc6KKm66o7EvjSxztqEub5nC7Bx+3idQI VLtQ== X-Forwarded-Encrypted: i=1; AJvYcCVHeCxnGqcAauSsHQF+tAJE4kutDhuktgbhmmBQ4c+8uCtNy4ECx9Fpjr3IP2DhSBwx6yCjfyRRFQ==@kvack.org X-Gm-Message-State: AOJu0Ywn/3dFpHt2GuhDTihw+9+Q1mJsDVCKsnmO2C17pdJpPYjgHfEF S+r0I86q1EgP8NuMkBGOAQ8RxTeqW3AlhUXCJuRoTIVbNz9BQfo+dXJfPo2Yg+E= X-Google-Smtp-Source: AGHT+IHvJKgGgS8F6PA+OGYeR1MSS8jBA76sh6PwAVPa/wEnz55WlDC55HealKCjGZuy9Cax5P2SIA== X-Received: by 2002:a05:6902:849:b0:e13:e6c1:ce3d with SMTP id 3f1490d57ef6-e1a2a978a80mr2069360276.43.1724734426374; Mon, 26 Aug 2024 21:53:46 -0700 (PDT) Received: from [10.4.59.158] ([139.177.225.242]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7d21700a48csm359552a12.85.2024.08.26.21.53.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Aug 2024 21:53:46 -0700 (PDT) Message-ID: <581a7d44-25c6-4498-b11a-9c0029bb9d78@bytedance.com> Date: Tue, 27 Aug 2024 12:53:37 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 06/14] mm: handle_pte_fault() use pte_offset_map_rw_nolock() Content-Language: en-US To: David Hildenbrand Cc: hughd@google.com, willy@infradead.org, muchun.song@linux.dev, 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, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org References: <5acabedfae7ded01b075960b4a91f2e15b4d76b5.1724310149.git.zhengqi.arch@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: D6253180007 X-Stat-Signature: t4d5a3da169jc916zt6j4ms4rfsyyxfh X-HE-Tag: 1724734427-127192 X-HE-Meta: U2FsdGVkX1+YusJUL1fTNuQu0q/Aix9uN0FlKs9a3T4dIyZVTi3O5yKDtrFKz4UeAPsLgGn9W05YCXdFGOy7134Itoo3EohT4of5jIaIgvONmMplNxj0jH+Rop/9izAYxZsglVlM2TMujcoL1LovZ+mxbpJoWqqMjOcz1ktC0Lby4rWavm3c3kd2vJsiGA6kFuze4aEYBnoDgF2FHjoZcHf26nSFQn4YOCW4XyLuKQeM7vTwXfSLLxO8nHMvFuwdLs+L6SLwKbL9N2LcUYxLVLQzaFNEy+1E6zXL5rEF7e/ptv3aCQrlsJExCC1wQc6Nol2M+hpQ66rzVFKb0c1xcnDNeU1SxvoT0WmoET+qmjG/ts1AELRZcPQWcVp+NcibhfE52HUD3buUPPIUIrPNPMvbDRR33FPPUCOhJGv0gqXLcYdbVIeYVRJUfox85QTp1J1ELd4DovLNIF56rbpoKBC11PLZC2i5+nStJ0v4ue1YUo/dMnXmQicCsD8oyw5lNMPTTCo6pSnr9TBhkCjYYYb3JI/9BrLb4EHwWVPQYni3lXGunULjlQjpIAdwpODoG2LEEeYwWQ4hlwrqQXSTyqcKVeF34vJHcn5md8PDhgikUm6z2NLEjdVlYvzfKLSCTVUzBcj2L7oEt2kQXJJUwci33itoy5BmNjmWq2LTTF44gRD6VLX7oDHkzY0kDq3xgYd0wsxrKIp9kWaGvbDFOqGieUFUqw1taumZELO8XjM/bFJcB2k3GLS+4ZQKnXIYaOV8W/+CwU2PCtX7GIpNHMl0ya0Z4tnxz/jU3ECqMelWwIQlOQXUtPo5tMfsjwCZUXDqyOmo7FefktFny6IxnKxylVDYpBQfmHUOhnL2miyssOPzlHTVKwxvcNJ3c4Nbzh0thtzBEn8hGKrNa+sUTpc//vgpyx3WNo95DSCoNYQG4yHLzbeXDvsrwWqTqb5rdU3CSGrmZqW9AT2hMh/ OAF330we m8aEcYn69ojjGD6ZI8xbmhj2ZrEx3GdGRMk22BfQlsYOT/cIoBEU1nCoJaK2bE9KnJIfT0M6NsLvADQEH279spIXZQ9CQPzJUPNBx287NIj/d6cKRH/GUpU5QPQonrX315qoXeKoGWNp5aJjFPuadXx3cUGcUhUerv3dtveU/VWvZfFFljuhT1kcQt4TvsDMt7YMo0NrJgnoqhwNPIxAJufEIcD8OsL8A89FniMTDyOSR6HnD0seh5TMAsHvvShLNvAZRdWGuKmcQ6jootR3KjKHoHJ28zLNpTOXWco/dnErvrgUmN/w8gPADmhmb8BlYJY2YTmIYkAt+vjvo8CJrJGC1cgyeMbGyuxif0eNvV+jnJoBct/veWd95H6dWMUeAd8hK8LIkLPz6X1hs4U+XcaWgqtr7OW62rJJDbKzcxevdHjtBjOu/ZuOg3APkgLL80gpyPyySkHT3xNnXHFECAGUzKrWjkgJTAZo768ZS7VQNPEXgCTtkh6Em8kfWrw2r48nlwx8QVKZsE97LpiEBcbtturgqLENKdQ2J 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/8/26 23:36, David Hildenbrand wrote: > On 22.08.24 09:13, Qi Zheng wrote: >> In handle_pte_fault(), we may modify the vmf->pte after acquiring the >> vmf->ptl, so convert it to using pte_offset_map_rw_nolock(). But since we >> will do the pte_same() check, so there is no need to get pmdval to do >> pmd_same() check, just pass a dummy variable to it. >> >> Signed-off-by: Qi Zheng >> --- >>   mm/memory.c | 12 ++++++++++-- >>   1 file changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/mm/memory.c b/mm/memory.c >> index 93c0c25433d02..7b6071a0e21e2 100644 >> --- a/mm/memory.c >> +++ b/mm/memory.c >> @@ -5499,14 +5499,22 @@ static vm_fault_t handle_pte_fault(struct >> vm_fault *vmf) >>           vmf->pte = NULL; >>           vmf->flags &= ~FAULT_FLAG_ORIG_PTE_VALID; >>       } else { >> +        pmd_t dummy_pmdval; >> + >>           /* >>            * A regular pmd is established and it can't morph into a huge >>            * pmd by anon khugepaged, since that takes mmap_lock in write >>            * mode; but shmem or file collapse to THP could still morph >>            * it into a huge pmd: just retry later if so. >> +         * >> +         * Use the maywrite version to indicate that vmf->pte will be >> +         * modified, but since we will use pte_same() to detect the >> +         * change of the pte entry, there is no need to get pmdval, so >> +         * just pass a dummy variable to it. >>            */ >> -        vmf->pte = pte_offset_map_nolock(vmf->vma->vm_mm, vmf->pmd, >> -                         vmf->address, &vmf->ptl); >> +        vmf->pte = pte_offset_map_rw_nolock(vmf->vma->vm_mm, vmf->pmd, >> +                            vmf->address, &dummy_pmdval, >> +                            &vmf->ptl); >>           if (unlikely(!vmf->pte)) >>               return 0; >>           vmf->orig_pte = ptep_get_lockless(vmf->pte); > > No I understand why we don't need the PMD val in these cases ... the PTE > would also be pte_none() at the point the page table is freed, so we > would detect the change as well. Yes. > > I do enjoy documenting why we use a dummy value, though. Likely without > that, new users will just pass NULL and call it a day. OK, how about the following: Use the maywrite version to indicate that vmf->pte will be modified, but since we will use pte_same() to detect the change of the !pte_none() entry, there is no need to recheck the pmdval. Here we chooes to pass a dummy variable instead of NULL, which helps new user think about why this place is special. > > Acked-by: David Hildenbrand Thanks! >