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 ED25FC433EF for ; Fri, 4 Mar 2022 04:21:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 725498D0002; Thu, 3 Mar 2022 23:21:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6D4CC8D0001; Thu, 3 Mar 2022 23:21:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5C3CA8D0002; Thu, 3 Mar 2022 23:21:23 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0068.hostedemail.com [216.40.44.68]) by kanga.kvack.org (Postfix) with ESMTP id 49CF38D0001 for ; Thu, 3 Mar 2022 23:21:23 -0500 (EST) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 0B543987B7 for ; Fri, 4 Mar 2022 04:21:23 +0000 (UTC) X-FDA: 79205404446.27.144C581 Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) by imf25.hostedemail.com (Postfix) with ESMTP id 8DE4EA0002 for ; Fri, 4 Mar 2022 04:21:22 +0000 (UTC) Received: by mail-oi1-f176.google.com with SMTP id y7so6796973oih.5 for ; Thu, 03 Mar 2022 20:21:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:mime-version; bh=59HE7Iz148pgiEGNqYTiUn+2VNuPsH2a4pfAoh50fLQ=; b=Zceh3p7g5dvRns9EOrhMZrsE0OdVe1veWOCjIdAPdMvc0c0xUc992FfdWS6Y8CVDQP qHTR946FWQERswWY+XSAqsOGhs0lM22wCxc7saIkMdkvfkXn90Sk5CCOOF3ZOW6qi/KF nIN9eIbBa4iTSQgiGqUcx1eSyZtzaODnr7Xm64pQW27aXp72DNH5DVchO+ccMqtzIJYd g6BV7+JkdsBFFyFzzi1TTtgI1ESvhwbkEsEZnzQO3GCnYgJPyyz4Qg0/Fo8sUlcfwMN4 +I10ONcEY7Cwm2JZ4h5XclYSIpKXtgTCZsw3BsOcEuq1eD1GFiepHqTD9EgSpd42lzP0 CLng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version; bh=59HE7Iz148pgiEGNqYTiUn+2VNuPsH2a4pfAoh50fLQ=; b=ED7D2ss/LUwwI4eD96h1n566RIoxMIRNM6CeZ8L7YUB339Acqua59kqUYGZO8f0wua P8Il3FSJBCcD7CWaBbz3iVLdgX/ctqDkbWUby9kWQ9zo9LQcWK2ACozKr+P2yag27/9g 7UJ513wbY20AW/F6R/4IN6PujaDN9ADHmdxUgo5TYFCpsdO8bwEAPHFvg5Wyk6qQmh9y lT+MHkHsmsG2woQo7AeNq7FHhg4ibFUXubzXmEwm6tuzKhVtEJmZMgzOA8czBZSTYjtE cnARZ00W0vh/RX6GQ9C5Vr6607zlQ13cxplYeUMXDunU+ZS/rxYRGoFevFufQc1jadhi 7y2A== X-Gm-Message-State: AOAM532QDB5Kh3pqwFBDvswj0mUeWfxjUy12OipSRW8uJs2r9aqLs1tS 3hxoe7ifWFLlrgi1YKaHrzIvjn68QPNUew== X-Google-Smtp-Source: ABdhPJzkbTJQ5eBzE5wz9fR02Gp6652d3Oj4Br3VMGwkrGc0ZmE1pCNWUItGxSnPeXmVjpwwkmELjA== X-Received: by 2002:a05:6808:1448:b0:2d7:dc0:c271 with SMTP id x8-20020a056808144800b002d70dc0c271mr7774402oiv.127.1646367681631; Thu, 03 Mar 2022 20:21:21 -0800 (PST) Received: from ripple.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id t82-20020a4a3e55000000b0031847b47aaasm2005644oot.26.2022.03.03.20.21.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 20:21:20 -0800 (PST) Date: Thu, 3 Mar 2022 20:21:19 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@ripple.anvils To: Andrew Morton cc: Matthew Wilcox , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH mmotm] mm: filemap_unaccount_folio() large skip mapcount fixup Message-ID: <879c4426-4122-da9c-1a86-697f2c9a083@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspamd-Queue-Id: 8DE4EA0002 X-Stat-Signature: yqhzdj8d99ic5xei6so1fw571ao5m7oh Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=Zceh3p7g; spf=pass (imf25.hostedemail.com: domain of hughd@google.com designates 209.85.167.176 as permitted sender) smtp.mailfrom=hughd@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1646367682-793960 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: The page_mapcount_reset() when folio_mapped() while mapping_exiting() was devised long before there were huge or compound pages in the cache. It is still valid for small pages, but not at all clear what's right to check and reset on large pages. Just don't try when folio_test_large(). Signed-off-by: Hugh Dickins --- mm/filemap.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) --- a/mm/filemap.c +++ b/mm/filemap.c @@ -152,25 +152,25 @@ static void filemap_unaccount_folio(struct address_space *mapping, VM_BUG_ON_FOLIO(folio_mapped(folio), folio); if (!IS_ENABLED(CONFIG_DEBUG_VM) && unlikely(folio_mapped(folio))) { - int mapcount; - pr_alert("BUG: Bad page cache in process %s pfn:%05lx\n", current->comm, folio_pfn(folio)); dump_page(&folio->page, "still mapped when deleted"); dump_stack(); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); - mapcount = page_mapcount(&folio->page); - if (mapping_exiting(mapping) && - folio_ref_count(folio) >= mapcount + 2) { - /* - * All vmas have already been torn down, so it's - * a good bet that actually the folio is unmapped, - * and we'd prefer not to leak it: if we're wrong, - * some other bad page check should catch it later. - */ - page_mapcount_reset(&folio->page); - folio_ref_sub(folio, mapcount); + if (mapping_exiting(mapping) && !folio_test_large(folio)) { + int mapcount = page_mapcount(&folio->page); + + if (folio_ref_count(folio) >= mapcount + 2) { + /* + * All vmas have already been torn down, so it's + * a good bet that actually the page is unmapped + * and we'd rather not leak it: if we're wrong, + * another bad page check should catch it later. + */ + page_mapcount_reset(&folio->page); + folio_ref_sub(folio, mapcount); + } } }