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 36F12C47DAF for ; Mon, 22 Jan 2024 17:22:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B749B6B008A; Mon, 22 Jan 2024 12:22:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B23CE6B008C; Mon, 22 Jan 2024 12:22:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C4486B0092; Mon, 22 Jan 2024 12:22:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 88F5A6B008A for ; Mon, 22 Jan 2024 12:22:47 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5E200160A50 for ; Mon, 22 Jan 2024 17:22:47 +0000 (UTC) X-FDA: 81707616774.14.C63A3DF Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf05.hostedemail.com (Postfix) with ESMTP id 93BE810001F for ; Mon, 22 Jan 2024 17:22:45 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf05.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1705944165; 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; bh=n3M0gi7nSkBkGgngYo34ixrjruguuV76mAEGBG/+/bg=; b=kNt2J9EC1t2qS0vf1+WHfDhmsNziV0xhJmQsOveOk+rlOXnHqHJOEndZ/4aCGVhS7FLV+V 7HhBfqYbyLQ20oNDwUMxryANY0u88WeXX87c3p2O+eU5SsYzvkjnaxFn2JU+y5JWtR/jar xxtaacTGoRMUpgsH1RW+4mG3iY9Io+o= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf05.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705944165; a=rsa-sha256; cv=none; b=Gd609J/3ZM9sATV2aBR7W9JMPMb165/EoxW4TKQPicfXhNnHaXG3BbM8b69DVrUaFsF4xb NlLkFXVMgF4chC8n+i9+Q4dc1ovEnavpBUoXbtCsUfGHrOdBT9wcgNH3yZ4r3MgyLzoC6B 0kq4nLam9RU4Gy6MPFyOYMrkJLvwaXI= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EC7B01FB; Mon, 22 Jan 2024 09:23:30 -0800 (PST) Received: from [10.1.33.151] (XHFQ2J9959.cambridge.arm.com [10.1.33.151]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 271523F5A1; Mon, 22 Jan 2024 09:22:44 -0800 (PST) Message-ID: Date: Mon, 22 Jan 2024 17:22:42 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1] mm/memory: fix folio_set_dirty() vs. folio_mark_dirty() in zap_pte_range() Content-Language: en-GB To: David Hildenbrand , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Matthew Wilcox , Andrew Morton References: <20240122171751.272074-1-david@redhat.com> From: Ryan Roberts In-Reply-To: <20240122171751.272074-1-david@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 93BE810001F X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: pkogymji84ucw8xtb136p6embs89qb8s X-HE-Tag: 1705944165-703213 X-HE-Meta: U2FsdGVkX1+0+ew6pN30rVmDo2p8LYJyszRDroj08lqvKUA2o6bGesAEyS7kRN/Pu2CNl29ONVgk1CvATwMZndCbcOoYVVm9D2izp4/Oi/qrxzpzqlvooFEiaVDb8cMeldrdiotJE56npnj3qcqBjk55uXYnlgvlZVNA4rO64AAw80bEX+Pvq2W4bzEyMuuUfjfD/HdmIO26PbEeCqjXsTHlZ8GhDNQTwSXo/RMoYnbsA80EnwcchsUPHLzGvEGRAZ93fJQg8YQLIsSZmipMOo02vRCWRGFgMWg0+URbzugvRVQawtelrsmV+2OH074YoVUgNfaQjNocK/qte3S8a12H6ZBWkXkWC9RtPlHkr2Ah1CdhyOkFgQLj9j+AgAvwEygpywLOSl63zXWI4qdIL/l2dfsWonI4HWS5hUGHc++eYLe1u/ho1PU4zYvtyoAzHal8qe01UV96jggg5o/Vk76adtrcLIQVLfJufg6fB5WRzy5S3FEP/J+dIjPoOKksQyeilmK4SKCAN4lsljLMTIOiDcXr1S//MZPdUigu/oF2XtyjmuH0p6Kh5KDTnKB3FwqhfnUofYd8oXX45ICfrAy3F6j62dASnn202svyR2Br1eCYMa7oQwAN8P0Cg9QSYFKfA+49b0ZD0EjT07YAO2Sd7+G/QCybC747GiTeuvyOZw5ydTb6HYPAYoUoprAKcKSVMOq74ZFaVsCHAldLt1Fkk4jW2VwRbd6xR02AUd5XDDX2sf0Z9T1WYFCMWlBrjbC8Amluy/w3S/i17hDadH6yiQBXkdk4chQjt+9H2qYjCkK13ugC8GNu7CaGn1CWf6EERNNb8t6KPldx/s44+POa2BRLuOmh5o/Q0g5kzx+oQabCXtC87ooNHGRpja6s82VHZ5SeTqE3TOjdp/Cnq1fWELWPco+8dj6yP/leSqJmY80fnm2bxSb5Am+dxXVVRuasA3P1OjTX71Y2GSb rU6n0ZNL 6T2xAcSGi3U4DEgIcR8v1d631OsMh4TGyC29BBWmKx16TCZ3Niyc2LriVQCrW4UinfJPkmO0YNjWsa8rJhqahYg/hqGmZ8RfF9TyYoosWhrKfpw3l25voSx9YfKxn0+1Knv+SkVWOGM8MELrGXDDDG8M2MlvNsu0T9Wu3fflkehDhZ1IHm7vnBgFdkGsJpMdolagCqV86+Y6DA6fxBrfPmFnV3nO4HQWjLPST4mEN2KHM9b7leOIZVHzRQ0ZGBjIvaim7rm271NMLwC69WHCjowttxmXXWh/egOlmhg4uKNzTmif+FuPBbLyNQqFPXym4tyjJh5REXSUyDnwATEXXvsnakoEYWwumsIcc3AQ2ESh6EkYhfpkcbr+KhaPtuU+fESgHSkcsIuA2cm71JUOjfMkO21CdxQvdgQF4OiIpzQnwFGCij3YtQ5/x1GHFR+KbDS5I 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 22/01/2024 17:17, David Hildenbrand wrote: > The correct folio replacement for "set_page_dirty()" is > "folio_mark_dirty()", not "folio_set_dirty()". Using the latter won't > properly inform the FS using the dirty_folio() callback. That set_page_dirty() naming is pretty nasty, hey. > > This has been found by code inspection, but likely this can result in > some real trouble when zapping dirty PTEs that point at clean pagecache > folios. > > Reported-by: Ryan Roberts > Closes: https://lkml.kernel.org/r/2445cedb-61fb-422c-8bfb-caf0a2beed62@arm.com > Fixes: c46265030b0f ("mm/memory: page_remove_rmap() -> folio_remove_rmap_pte()") > Cc: Matthew Wilcox (Oracle) > Cc: Andrew Morton > Signed-off-by: David Hildenbrand Reviewed-by: Ryan Roberts > --- > mm/memory.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 7e1f4849463aa..89bcae0b224d6 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -1464,7 +1464,7 @@ static unsigned long zap_pte_range(struct mmu_gather *tlb, > delay_rmap = 0; > if (!folio_test_anon(folio)) { > if (pte_dirty(ptent)) { > - folio_set_dirty(folio); > + folio_mark_dirty(folio); > if (tlb_delay_rmap(tlb)) { > delay_rmap = 1; > force_flush = 1;