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 6DE8FC3DA61 for ; Tue, 30 Jul 2024 09:56:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1F036B0083; Tue, 30 Jul 2024 05:56:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DCED46B0088; Tue, 30 Jul 2024 05:56:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C96276B008A; Tue, 30 Jul 2024 05:56:58 -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 ABE1A6B0083 for ; Tue, 30 Jul 2024 05:56:58 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 521F8A01DA for ; Tue, 30 Jul 2024 09:56:58 +0000 (UTC) X-FDA: 82395965316.23.0301DD7 Received: from m16.mail.126.com (m16.mail.126.com [117.135.210.9]) by imf18.hostedemail.com (Postfix) with ESMTP id 802321C002E for ; Tue, 30 Jul 2024 09:56:55 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=X9TpeQsz; dmarc=pass (policy=none) header.from=126.com; spf=pass (imf18.hostedemail.com: domain of yangge1116@126.com designates 117.135.210.9 as permitted sender) smtp.mailfrom=yangge1116@126.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722333375; a=rsa-sha256; cv=none; b=4I3cguqLIRh2K3Oja2u4WXbOzNImh4ka361fdcjWIwS9igqa6uBEVCrCFPl/AxWQZAn6o/ q5bHqK9Z8yGAeei8gqxHKjN6P4tv6tTQLZs+MnfMeoavID10nsUoQiw5/Tu3Un98+YR0hI 64h+NfF+G9glWvRGV6IsOPV/IV+G/70= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=X9TpeQsz; dmarc=pass (policy=none) header.from=126.com; spf=pass (imf18.hostedemail.com: domain of yangge1116@126.com designates 117.135.210.9 as permitted sender) smtp.mailfrom=yangge1116@126.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722333375; 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=Co2lL2cfU3hSe0Vfl/MJK5nN1E61nFj+Hw6DAxjXcvg=; b=wshZrvrdArZgliGpS8Bof/1w3jYfoMmpFOJujWrJoW1cEX5vACsMfCbyv0WJDDfHDfshYd sRZmSzHz+61eMv/fjo+IbWjNsvdPGY+JW8pB7TUsE9O1jpA5lQ+V8+Vf9zYa/givAFEh1c YAHdQ0peOhk4+TEcf0qMw0iWhetjbqE= 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=Co2lL2cfU3hSe0Vfl/MJK5nN1E61nFj+Hw6DAxjXcvg=; b=X9TpeQszSCP541e+3Cu/MwMdYX67ClmK4HmGPUnolpzPrg3fJ/9Tkf6kiSENMh esO2TR32LH1FT0KZb59g9VdDnD0kWkUDmWaIcWPj7poMJZQzrJ9WAxUd8sUBhhlB 1meowXFfiZDIuVbJKyKTDb9eyZeJ961l22h30wCmy3V8Q= Received: from [172.21.22.210] (unknown [118.242.3.34]) by gzga-smtp-mta-g0-1 (Coremail) with SMTP id _____wD33ybeuKhmsyKAAw--.48208S2; Tue, 30 Jul 2024 17:56:48 +0800 (CST) Message-ID: <9f1b8c87-6ea4-4f88-9332-13ac4b1b35d9@126.com> Date: Tue, 30 Jul 2024 17:56:46 +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> <1c5f1582-d6ea-4e27-a966-e6e992cf7c22@126.com> From: Ge Yang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID:_____wD33ybeuKhmsyKAAw--.48208S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7tw13Kr45Aw47WFWUCFyfZwb_yoW8WrW8pF WxK3Wqgr4kJr9FyrsFqrn8XFyrtrW3Xa1UXFW3Grn3uFn0y3Z7GF47C34UCFy3Ar4DJF1I qay8tF1xZFyjvFDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jYpB-UUUUU= X-Originating-IP: [118.242.3.34] X-CM-SenderInfo: 51dqwwjhrrila6rslhhfrp/1tbiWQMsG2VLbyW9XgAAsq X-Rspamd-Queue-Id: 802321C002E X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 7wbh5ucfi8p8bzre1dwjeirxaawh386c X-HE-Tag: 1722333415-805938 X-HE-Meta: U2FsdGVkX19PQHmYtR94ystU1fCZu4W1XOge+4s7S/nopJXl497r77axFNTYpfGaVzCM8wUVhQGskyJgD3Yp5Q+PScPctwdeayXBc3MN+FHKIk0eMZSZOhNVO+9KeOtnwTejS5GaUBt0CF3CmP2A6Auf2IK1cnj/86FLSqMjTGNvPgoEyOqiFlFvMGBevUqWXaBcPRe1ICbkjbMltE1V7orhymSw3k5Z37ue44e8ZyZaSQzrTGtopdJvKazQD+9qH8462/YYBYoXATPNaK/WGzBe63nVH9U4kR9SoPJTa2HroMVJfHELHrJQJWyLWsVitMuv56I/et6tu7BC6ZZq1Sn/Fr+WDfl+xkycxFMIFNYPqwB/6yHDWZs3GQvvf8lJtwDGYH279mWpThy/aGAmeEGSggDQ17S695Koa9SHW6SeVf7d3UJjxp67AdsRZu3Li6PO9nuEGtyBeF1ATVP/9ZlV2afdxvVS9NVMEYRM7VFEw680IjD0kPgTNEJoQTR6YLLtrjpWowZuE6ZjFUDUBwGfUOqetFbuqpiURY7tC86MniIIdG1DdDm0FtlQ0iNI/XRqjcv89MmcGVW4Ri5SX58HBCcCLYyY2UhdSIrNRzUaKqeFDiPc4u+gcyMkFR4HbYzwyl60QYbgZFeDoIQVXM7gBbMMjZZREnoCsd6TvtCLLUpy/CQ1chGoo6eGgiJxNjmd3vrIzMig3TIzIgoItgD4tmtQHQ3e98IIdsDrqxttmEO4tOR3Oachk4qB1ctdSsdorCtbnk1XsrrsDvid7EBwpfGKxD1D5X6yUMCj04pLr758NbJSeu1Lz1LFjv7HWtNccL0vCCUFKBv6XCtJ36xzcsmqhv/G7d4pOb3kyhb7pVXVCDS3btDb9fMfFNDtPF7s/5g+rU2Ud0fhy/SxWox42LT0sbx2i/U+ot220RyIXzj3DswwkdQ/9hTF/jhpQPvMBvhTkeU+59G9Ufy gGmZdJ+5 ZWbj6dJ2eIEGsa1lej/WhAlWfh+d8/hYciHmqiHS/Ikgt0YFHTJw9/0zPxvHxJi1vp+GYOnRdh1xNXmchkV/ld70EHMW6ybDHWulKLn5u7JSswGaT7GO6hcpClm+li5qWS6zRK4EKXONVcT2RABbHNFew+DPZiWxG2j/TcKYs8C1I3vHl3jjTMsMq0pPc2SccXEicKcwCnlnUCXmd4/CnIpLLSHOquszu9xCygWo6u5G0s5LRu5FKJiT4LCpWbmr2OkTr1OWu3pnAmZTuV3f6+8ScYeh7qUE1O68UjmoX0FkJ53PsXj9OhU+oZ8jBn3XdgwlDkugQWUcO6fKJJ6XfejOItrseMUKHB5wfFslpW4c+0cCj0zIwN6DC0Yd366EDtgdAGFekY3Yva96w60wZ71DVJn5iQfayFnofNv6Kv4M4EkMTBK/Mlu18PAYXb9LbUUlESmgmXY9cliA6JBGM9QfYTg== 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: 在 2024/7/30 17:41, David Hildenbrand 写道: > On 30.07.24 11:36, Ge Yang wrote: >> >> >> 在 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). > > In which case is folio_activate() called without the PTL on a mapped > page or without a raised refcount? > No such case has been found. But, folio_put() can be run at anytime, so folio_activate() may access a folio with a reference count of 0.