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 EDC8CC3DA49 for ; Tue, 30 Jul 2024 09:36:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8909E6B0085; Tue, 30 Jul 2024 05:36:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8409F6B0088; Tue, 30 Jul 2024 05:36:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7087D6B0089; Tue, 30 Jul 2024 05:36:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 52A386B0085 for ; Tue, 30 Jul 2024 05:36:37 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 02086801E2 for ; Tue, 30 Jul 2024 09:36:36 +0000 (UTC) X-FDA: 82395914034.03.43F095A Received: from m16.mail.126.com (m16.mail.126.com [117.135.210.6]) by imf10.hostedemail.com (Postfix) with ESMTP id B5CDEC0007 for ; Tue, 30 Jul 2024 09:36:33 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=dCKWbzjm; spf=pass (imf10.hostedemail.com: domain of yangge1116@126.com designates 117.135.210.6 as permitted sender) smtp.mailfrom=yangge1116@126.com; dmarc=pass (policy=none) header.from=126.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722332168; 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=LI6OvfJ54Zf0AJX2niBwJqF6IGU6IH2SW6Hn7PnnAQE=; b=YiMiKhEYCV4hdCBXRayDFp+rIso6mbBTKtl9Qy4kh8wptWUSMtpSpelpN6qVMyXvnJ4MnS aYp0qifdp/G9Q7wrq7JnuMN1ZXyMh90Pmcb3kWtV61DcyJIKYw+hyIT//tQgNJ5oB/l1P7 hlFB5bbeeNS+5kPUtgxUSs9RX7c7wOc= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=dCKWbzjm; spf=pass (imf10.hostedemail.com: domain of yangge1116@126.com designates 117.135.210.6 as permitted sender) smtp.mailfrom=yangge1116@126.com; dmarc=pass (policy=none) header.from=126.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722332168; a=rsa-sha256; cv=none; b=dgjKGlQl9HBU2azB6Z0HRgEGa/vId8l9MtLbaGA5bl0tO8914enIWSXWo/c+ZKced22CoG RuO+IpVuUClLDe4GZaxc3fY2lq5XiPE8deP97FFWIb+CGLHh8ATFWIZrESb8VOxG9jtqvb CVO0py4iu8h+XH1JFKcr4VFkq1zQNxo= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Message-ID:Date:MIME-Version:Subject:From: Content-Type; bh=LI6OvfJ54Zf0AJX2niBwJqF6IGU6IH2SW6Hn7PnnAQE=; b=dCKWbzjm4s/B0cn6vNywAOFNR/7BabeH/NUdh5xYJvm1H+lpmu3S7O+74OUiko lLF426ZfHZpvtZXldAH+s94vZs9jsB29w/f6f6Zeha2wbycpgFThLv5xj95zU7Lm DF0mFLsSJU/YWA7Z6tCWVtnVs07V/YHa2RpUwycE9DGqA= Received: from [172.21.22.210] (unknown [118.242.3.34]) by gzga-smtp-mta-g1-5 (Coremail) with SMTP id _____wD3HxIUtKhmLc8oAw--.11873S2; Tue, 30 Jul 2024 17:36:21 +0800 (CST) Message-ID: <1c5f1582-d6ea-4e27-a966-e6e992cf7c22@126.com> Date: Tue, 30 Jul 2024 17:36:20 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2] mm/gup: Clear the LRU flag of a page before adding to LRU batch To: David Hildenbrand , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, 21cnbao@gmail.com, baolin.wang@linux.alibaba.com, liuzixing@hygon.cn References: <1719038884-1903-1-git-send-email-yangge1116@126.com> <3a2ab0ea-3a07-45a0-ae0e-b9d48bf409bd@redhat.com> <79234eac-d7cc-424b-984d-b78861a5e862@126.com> <9e018975-8a80-46a6-ab38-f3e2945c8878@redhat.com> From: Ge Yang In-Reply-To: <9e018975-8a80-46a6-ab38-f3e2945c8878@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID:_____wD3HxIUtKhmLc8oAw--.11873S2 X-Coremail-Antispam: 1Uf129KBjvdXoWrtry5uFWfKFyfJr4DXrW5Wrg_yoWkZFX_Gr 48Zws5Gw4jg3ZrJ3Z0yry5JrWkXFWYkr18uFy8Jay3A347Aw48CFn2gr18ZFy7Jw1xAFs0 9F4DAF4Yvr9xZjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IU8yrW5UUUUU== X-Originating-IP: [118.242.3.34] X-CM-SenderInfo: 51dqwwjhrrila6rslhhfrp/1tbiOhksG2VEx2GucgAAsP X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: B5CDEC0007 X-Stat-Signature: chmkszjetsw5kwnos6ogskkcsfmwrchs X-HE-Tag: 1722332193-11851 X-HE-Meta: U2FsdGVkX195JPfrE6wvGlG7Lf4Ipxf5wiXjld8269PBidsVlsSlIBK1XyE65WSUpzN3s6Ey3vi7ohYXc2tiujP8JYQHTQw/+86D1lK1dMR/37Xo07fpV0MKgqB/4aU60UrqA7uKF4DMx4nWd9DxMamk5APvP3EM5JSGliTMmSHMpritBvElCeCeRfcuCu+MIMXmbzFy2eDpmxUd1AewYQv98qVOt6guKiuWcDdmY42Q0YayZMRuw2gsvIN3H8SliHdVEmdAXnZNARB+sU+RW5bSztJ1tYjziejdNC9wCFxq4gdjyrSakkDnMlPFrSV4+pT/QQfl2GHyEIRGrMVY1TKpbbkI3s0kNI1WBkvifg4K82L9fMAZrRcnEQqMVlDbCVz9alCe81RZyfMunCNK8bM7wmuYnPAAVwulI1oC7v3qFev2Jai4vu7hOD58s27dFVKi2FNv686hr95b1yZbKd8LCcB1fSbFKpuphMvrhfpzBiRwEyRF9u/TwVO/+0Q1eJVc/hulRSvb8OqddLcvucJ5/EST2k5lMZf2lEZIIYww6yGOj1iuxHETIAyRVahWL1TFi0RVQsTvbOKjZtsl8HkLDXxv8s+iVu0Ybc2YZ67mKnLrgfoZ1EQdR1WaGNPj1Z2MiS9yLFWe94yXuBawPas7Rjo8ABBb5+Rrzban1emvP8o3JNZHRgB+7Bt0RD974sa2VMt0AI9i9atKeptRdF2YtDZ7PXd/KlF/Dd6rLE99Tj3Ct0CnTXGnGPAcL37h0sngzK3ypht6XH0y1pCBod9acbBX6J/0mGnP+Zwoh0xny8pHdr8M16uZ2D9ZaO8FJi62XvF1Jpg8hOhCaNlj1wBjmqZylQV+lGbxQWlQNN3ygPLm3Gsz9Bk8J18kRwnHQj2ebZZO6H+Uz7LrWOU6VuClWJPekf2gYDwNob3a3QirSXIogJBs8ZiRaRHau7GN1ggUQETfQVSwgDtFhr1 OMlFhGMU IZsemGdtClFExbkMETHVksMt3zX82qNJa/gT742w+kEQTh02uRiY632r3EXD/Q35Uv8PLJnhoQezrikGOL6YQ0Sbl3iGTN8KoCcTAlApDaE84MCuzmrK4jdYL1NgCfttUhMXarPUssfc8gCyKsTSAAkbz02xtkzk/zqP8s8rp2GPyiuQZax6hlyxXFDd1Z6/YaEkLFnGTr46h7XiWGVq7mhLuArwdQA14bzqvUEGREaUNjve8fX/MR1Uhoaq64h/VV3eZ62D2uDLk5Jhvu/Fm/Gy4Ktk/ems/PfyYGudqdRrUvWcZAcN45gNUn3vl+CZijodylinmAaRLwDot9x3tujPexztakBXqej3/1jj192dBGA8C89z1SiAjnd19u4vSfXZFuUQTW3kzHNc1WyCjZhts7q8oN6El2pBy3/kpAk438sf6Mk+QtrxdDzAKZC0tZMZuAkJ0PNNpAvlQYPOYgPxV2Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: 在 2024/7/30 15:45, David Hildenbrand 写道: >>> Looking at this in more detail, I wonder if we can turn that to >>> >>> if (!folio_test_clear_lru(folio)) >>>       return; >>> folio_get(folio); >>> >>> In all cases? The caller must hold a reference, so this should be fine. >>> >> >> Seems the caller madvise_free_pte_range(...), calling >> folio_mark_lazyfree(...), doesn't hold a reference on folio. >> > > If that would be the case and the folio could get freed concurrently, > the folio_get(folio) would be completely broken. > > In madvise_free_pte_range() we hold the PTL, so the folio cannot get > freed concurrently. > Right. > folio_get() is only allowed when we are sure the folio cannot get freed > concurrently, because we know there is a reference that cannot go away. > > When cpu0 runs folio_activate(), and cpu1 runs folio_put() concurrently, a possible bad scenario would like: cpu0 cpu1 folio_put_testzero(folio) if (!folio_test_clear_lru(folio))// Seems folio shouldn't be accessed return; folio_get(folio); __folio_put(folio) __folio_clear_lru(folio) Seems we should use folio_try_get(folio) instead of folio_get(folio).