From patchwork Thu Mar 4 06:44:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naoya Horiguchi X-Patchwork-Id: 12115571 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ECD46C433E0 for ; Thu, 4 Mar 2021 06:44:51 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 9B1A764F04 for ; Thu, 4 Mar 2021 06:44:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9B1A764F04 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 34B136B0006; Thu, 4 Mar 2021 01:44:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 321FB6B0007; Thu, 4 Mar 2021 01:44:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1C33C6B0008; Thu, 4 Mar 2021 01:44:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0157.hostedemail.com [216.40.44.157]) by kanga.kvack.org (Postfix) with ESMTP id 03AFA6B0006 for ; Thu, 4 Mar 2021 01:44:50 -0500 (EST) Received: from smtpin14.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id B50741803A548 for ; Thu, 4 Mar 2021 06:44:50 +0000 (UTC) X-FDA: 77881253940.14.B924CC2 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) by imf22.hostedemail.com (Postfix) with ESMTP id 7E8B1C0007C1 for ; Thu, 4 Mar 2021 06:44:49 +0000 (UTC) Received: by mail-pg1-f171.google.com with SMTP id x29so10023818pgk.6 for ; Wed, 03 Mar 2021 22:44:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bNMnMqrp2HEKjdFiGupPYllLza/hG1Fb8IPo+AOqpUc=; b=ZugkI/Z2joHxCRCkM+/RQ5AJpo78d9DlDl93uGai8iNu+80c3d7Wb5M/YaRByzQVUE Xu0p6GpnKjLMbILkC4VxBlcKR91gvuldz369B7nsxBCzPVWXVlGyDO0babgmCCUL1gkj Jayy6MyYHqbYn9dMap2Gz2IIwtZurRgu1c/FCgJ6CUTrpsef/CM9FRpxmrZmGYlacs1D DHUh0tTsKlDLgpzcqxchPm8y4TkpsjhpV8/o+blsUWKuSb2Qqw6zV7c+GcVhnkg8KRDt ObvlW+CzjrZ/gfpb9l51zayjhdGSz7GYwVCt7mrNkooVTHNz8MXE47l8Es02sdGiHf1E sApA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bNMnMqrp2HEKjdFiGupPYllLza/hG1Fb8IPo+AOqpUc=; b=UYGieY1aJgPeeaY9y5+0UuTlnApsm3IEnS0Ceyn7UuU0mZ7VCJGZYN4BWAo1ynmbMA dvnPGVamTLEq53hT0yvFsXhu4IfrKewnRC7E/87b/KOEQ0TDWLmopA8XA36y2GyhHW9z zDYhQZSSDq7klhRvAjRTf1F7psKCrh1dpbGoU2OsK1xsU+C4WqrTPFACcWbV84JAKlyj tGexIkdR9L/UlWRa5Ml2jiRjzPPzUYbfFkhecx9XmrTT3RXDNvSJTNaKPcH5RUCgwych 0OACeH67C8ZcSNQmG25XBgtsk8R8WC55DEeS4LOJ0NTN34t59R+a4/phXwARhvvxCyFr kvMw== X-Gm-Message-State: AOAM533lCLnQUN9MtozhmDnBhaTRa5IPEAQbOswrzTf6oMzqS1gIVl2m lfUqd6NlktMmbIYKwVXHad4d4PGC6Q== X-Google-Smtp-Source: ABdhPJzU83jInWMoRFJgTO3YLpdTDpMekD9NZvktN4FIRW3/y2yRQvRlSSvsLNVTvUwCdmDJvJ8ltg== X-Received: by 2002:a05:6a00:14d5:b029:1ec:c5e5:6041 with SMTP id w21-20020a056a0014d5b02901ecc5e56041mr2388556pfu.36.1614840289043; Wed, 03 Mar 2021 22:44:49 -0800 (PST) Received: from localhost.localdomain (h175-177-040-153.catv02.itscom.jp. [175.177.40.153]) by smtp.gmail.com with ESMTPSA id z8sm8933267pjd.0.2021.03.03.22.44.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Mar 2021 22:44:48 -0800 (PST) From: Naoya Horiguchi To: linux-mm@kvack.org Cc: Andrew Morton , Michal Hocko , Oscar Salvador , Tony Luck , "Aneesh Kumar K.V" , Naoya Horiguchi , linux-kernel@vger.kernel.org Subject: [PATCH v1] mm, hwpoison: do not lock page again when me_huge_page() successfully recovers Date: Thu, 4 Mar 2021 15:44:37 +0900 Message-Id: <20210304064437.962442-1-nao.horiguchi@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Stat-Signature: 6nsej61kiy7ugtar5on7xdpftk19dufu X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 7E8B1C0007C1 Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf22; identity=mailfrom; envelope-from=""; helo=mail-pg1-f171.google.com; client-ip=209.85.215.171 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1614840289-651497 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: From: Naoya Horiguchi Currently me_huge_page() temporary unlocks page to perform some actions then locks it again later. My testcase (which calls hard-offline on some tail page in a hugetlb, then accesses the address of the hugetlb range) showed that page allocation code detects the page lock on buddy page and printed out "BUG: Bad page state" message. PG_hwpoison does not prevent it because PG_hwpoison flag is set on any subpage of the hugetlb page but the 2nd page lock is on the head page. This patch suggests to drop the 2nd page lock to fix the issue. Fixes: commit 78bb920344b8 ("mm: hwpoison: dissolve in-use hugepage in unrecoverable memory error") Cc: stable@vger.kernel.org Signed-off-by: Naoya Horiguchi Reviewed-by: Oscar Salvador --- mm/memory-failure.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git v5.11/mm/memory-failure.c v5.11_patched/mm/memory-failure.c index e9481632fcd1..d8aba15295c5 100644 --- v5.11/mm/memory-failure.c +++ v5.11_patched/mm/memory-failure.c @@ -830,7 +830,6 @@ static int me_huge_page(struct page *p, unsigned long pfn) page_ref_inc(p); res = MF_RECOVERED; } - lock_page(hpage); } return res; @@ -1286,7 +1285,8 @@ static int memory_failure_hugetlb(unsigned long pfn, int flags) res = identify_page_state(pfn, p, page_flags); out: - unlock_page(head); + if (PageLocked(head)) + unlock_page(head); return res; }