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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E6F8C433EF for ; Thu, 7 Apr 2022 13:04:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343548AbiDGNGK (ORCPT ); Thu, 7 Apr 2022 09:06:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343539AbiDGNFq (ORCPT ); Thu, 7 Apr 2022 09:05:46 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10D4B25CBBE for ; Thu, 7 Apr 2022 06:03:25 -0700 (PDT) Received: from canpemm500002.china.huawei.com (unknown [172.30.72.55]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KZ1hv5s5wzFpbF; Thu, 7 Apr 2022 21:01:03 +0800 (CST) Received: from huawei.com (10.175.124.27) by canpemm500002.china.huawei.com (7.192.104.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 7 Apr 2022 21:03:23 +0800 From: Miaohe Lin To: , CC: , , , , , Subject: [PATCH 3/3] mm/memory-failure.c: dissolve truncated hugetlb page Date: Thu, 7 Apr 2022 21:03:52 +0800 Message-ID: <20220407130352.15618-4-linmiaohe@huawei.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220407130352.15618-1-linmiaohe@huawei.com> References: <20220407130352.15618-1-linmiaohe@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.124.27] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To canpemm500002.china.huawei.com (7.192.104.244) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If me_huge_page meets a truncated huge page, hpage won't be dissolved even if we hold the last refcnt. It's because the truncated huge page has NULL page_mapping while it's not anonymous page too. Thus we lose the last chance to dissolve it into buddy to save healthy subpages. Remove PageAnon check to handle these huge pages too. Signed-off-by: Miaohe Lin --- mm/memory-failure.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index bd563f47630c..3f054dbb169d 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1046,8 +1046,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) * hugepage, so we can free and dissolve it into buddy to * save healthy subpages. */ - if (PageAnon(hpage)) - put_page(hpage); + put_page(hpage); if (__page_handle_poison(p)) { page_ref_inc(p); res = MF_RECOVERED; -- 2.23.0