From patchwork Sun Mar 10 13:48:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13588126 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 C262BC54E58 for ; Sun, 10 Mar 2024 13:48:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 31B196B006E; Sun, 10 Mar 2024 09:48:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2CAB36B0072; Sun, 10 Mar 2024 09:48:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 192AE6B0074; Sun, 10 Mar 2024 09:48:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 07C836B006E for ; Sun, 10 Mar 2024 09:48:58 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A5A10140699 for ; Sun, 10 Mar 2024 13:48:57 +0000 (UTC) X-FDA: 81881260314.18.E54818A Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf19.hostedemail.com (Postfix) with ESMTP id 30A671A001A for ; Sun, 10 Mar 2024 13:48:54 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=TtovouSw; dmarc=none; spf=none (imf19.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710078535; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=e+WuQQJbRDvKD1DxNlupQBUtKDpyjo0+oqd6C/Rf788=; b=HkBiKxop9Y3VLP5UoO370OSv6ezBNfLmwsRS7YnAW0xmPId5hYIzfIlrtsBxBn2iayvEjG H/i+rMpFx6vJziN/1+vnn0Ubwg1G0MPty2T/KrwQVlFlPXK+driRhdKrq42XfBhDs8sv2W zcjpqb4f7nabqug5BqAZDEq+qhJCErU= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=TtovouSw; dmarc=none; spf=none (imf19.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710078535; a=rsa-sha256; cv=none; b=GyzrA2PGtkuPjdxXZm01kWb/+M7zIx1tfGNGU6pjH6+6qtvYBwHewruth07IgoRYCI4Kkz kuprc7ChSCt7ZpLgK8rWsTkIrJgKrCBNSU0ida3aRGaXpvsLIY91m0zH5+cNUiaJqRsbFI r9MxHrbZnAO0Noq2R7NlcOUCuXiX+Y8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:In-Reply-To:References; bh=e+WuQQJbRDvKD1DxNlupQBUtKDpyjo0+oqd6C/Rf788=; b=TtovouSw59wf8GATmx+J2F0NpP NUgSmti3XagqMVxtRS9BXYW6tpmYXebASJXP93klRtw/EN7+sfm2fih02wllVzY1uClXqeCXcz001 ihS/bESP+3+gGEI4BOl1cqiKIrCFg/2XZTDDertZxl2C3ZrqG6RxG+HOrnGQ1nLQvXKtwZ8jX3Sx0 dcM72vbF0jBlCasE6FyAIozx7e39CUWnfKa8vU0IZAJ/VVcfwaNH5XWXaeu55xcOXwGiI3PrYHJhl 3GyaDblh+DXglo7Qz/ALpN/qupOMFq5lrrqwoa0QMlCz83BtlCP4Ct+HSsNleAeazImubt1FD1u18 2j/XQdiA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rjJXo-0000000G3HN-0FY7; Sun, 10 Mar 2024 13:48:52 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Ryan Roberts Subject: [PATCH] mm: Remove folio from deferred split list before uncharging it Date: Sun, 10 Mar 2024 13:48:48 +0000 Message-ID: <20240310134850.3825782-1-willy@infradead.org> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 30A671A001A X-Stat-Signature: fkoyqpbwzc8d6b3e85m7czgxn4gcaf1k X-Rspam-User: X-HE-Tag: 1710078534-947578 X-HE-Meta: U2FsdGVkX1+lXm9XbbkENEEJyIko8x7WxrOzkYj9xQ7EaacH8HETy/qZk+sLFBCjOF4zAnqOkEMGtrcCLniZmxqRHkpRrvqh0kgHGI7CC6PtvWMaXDyI5KK6aS89gVKPDpZoH7mD3bUJkZh8fgwuH73P/wAOTo1MWzv/ngVKAG0PkdPXWfKVtHSmjjr11hnXV4WNx0M+qy3JQP/6S/QEO9IkFC7342F9BBbHR+9AnsdVMiNm6PmobdJhJS1RsmFDBadBhAZ1N3nOZD8qu3WP1FVTGpxgrMyqnqTZg0csZuBtyyiqcXocN489sGuplpyzl66Th/UQcXNU6YsQcW7HGvDy01W6yKhpAES1v3z4QfLCxbrkGu0dNN3lj1wURmqyKagdi5s/NMAI5+hPIzgR2ibM+HmDAcesJghgDSb/CKfX6B8Z3n0o9d3BDG+xmjx24AyYMADUcaRX49FrwozVh1d/oJ5iubPfFgHLbh9VGFQmS7SZyi5cFIx7Ip4+pXCvKWdlrThneQbpQtDlbr+l3GaTecnke+vPxiov8R74xQchpw7HUZL2RGssucQw9TKI7VFCQd0NRMquWtpUi1P2T/7sa9FjJWj59ghbRxH0T2EMvYrVol3eKdINR9sPIN+dzn5OIVOmKYR8A2AHlOCPPARJW1Ne8KUFj3d8aUiP0eMdoO5oKIQ/ksrtFvEDQqQJnylNgaCXPo5kWubABiOdoYQfWYWc2daKoLsfaL/KqkwSIznulGMDCU8c6e+3UprcnjmbzOkOjoI/BiUI5XH9ek4F+NydGRd1cxhJt2PDolD3R31yigndxS/hcXVSBvgQ0ltIpVBsMvC9VZS3CbutChwK0OaaeQGkRxJ63uL/GCf6jNW/u3CZTh/EHRgdeHx+rxKmUBYGgJdrc9S63/QXhjUI49xvRp2plcbZrZbPAswj28KMqBPMXEwiohFi58c5KxofL8J5u5ioCWyz0qx 0aixaRPV +Y3j67y72VP0i7jnrgrDPPTfuiNkl9EbAUgK+DmhXivihp+xdZOwuBUC3WL000o2TRmiwcCVSGVT0AVxHZ6I4cMxkkfyQ8FAQRqIiqogGSVpu+YSLM5sHriM3M0daYfh9mbT1yrer8gC2yLoPJyStB0/oVLLz17K9jECIL2ehjOmuzaMghBVWdsqLwUCMbi8HM7rJKSvMMGPFDhwGvcRkQwWARSKUVxIfDAvf8l+KBFOkYskYyht4CSl0+f8Ol/IIHTEoew13BvuClOMpp5Qep+0ehXtF2ljROvGAyFAW3wWZc1s= 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: When freeing a large folio, we must remove it from the deferred split list before we uncharge it as each memcg has its own deferred split list (with associated lock) and removing a folio from the deferred split list while holding the wrong lock will corrupt that list and cause various related problems. Link: https://lore.kernel.org/linux-mm/367a14f7-340e-4b29-90ae-bc3fcefdd5f4@arm.com/ Fixes: f77171d241e3 (mm: allow non-hugetlb large folios to be batch processed) Debugged-by: Ryan Roberts Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Ryan Roberts --- mm/swap.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/swap.c b/mm/swap.c index 6b697d33fa5b..7b1d3144391b 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -1012,6 +1012,8 @@ void folios_put_refs(struct folio_batch *folios, unsigned int *refs) free_huge_folio(folio); continue; } + if (folio_test_large(folio) && folio_test_large_rmappable(folio)) + folio_undo_large_rmappable(folio); __page_cache_release(folio, &lruvec, &flags);