Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp922289pxb; Mon, 16 Aug 2021 22:39:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybAjKdDwjQnmqoSOM/+vBjW0hyPgyP7OESr4xowN2AD/HK++ltkqlqv/Es4PdUV30iUPxU X-Received: by 2002:a05:6402:70c:: with SMTP id w12mr2069039edx.288.1629178744846; Mon, 16 Aug 2021 22:39:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629178744; cv=none; d=google.com; s=arc-20160816; b=RsGMou2kD6LcPgf8mK8QPMeXJIfQIVnjK7+5md/kcrw5+Rc7fPMsZhuai1ktuX+2wA xuygnGt2uDx2w5BqeV53F4yVkDbFB7TtI1VdscRCLFGyNoUa6b+ccigMBrI2y2OmjuVs aHK4lgBoJ099K6GhZSd6X09r2T4L4bKxGS50KHkxtjuqXtTvO1LuzFaUjjIyLQywYgg7 +IIUZq32CjUfHGTXWjsaUjijzPyUtjrbeer6qe7s/URjlEdHEIG0KBSqRF7z5WJ4z/8o Xroxh72iblCXhfWXyOun481FpZ6VLQzp9/0OgTEwsRjAp2Jm1fMRWJ4TJ+efDkek4Foc o4Yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=qupgUTuI0E9peSKKuud5v7yCUmrTA6ykPIz7pdKMrso=; b=F5+rtcWhmDIfYn1C9BZO/kHi/vnQaEShRq5DbcPKmk63TXOZaB+sF53rb/wK/aC0j+ heMBmKgWcsWANy1UjR/g+ucOksvXHSG7oOfVXEZLM/2YFUzGxLtiLChzdBcCfE33lcFk zQbkWottTtZkLTThKCsCD4ijf/0If5bX+ZN9M1Sb6vtjl4yAqsA9GhecQDDApdLd8k0A CNxtkM48abbhA36Bf+0IUGZU0NP0NWunJptybrqrG+PIZIsBILgBD69PtiuzDK8+reaB pTmTEyUeZXF+w6L4VwcPJlDhlAsP2Q2g8K8rWdC9uU28civqcpjq0wJQuWqTJblbbCjT wXnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=klN0Nyv8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o8si1249954edr.312.2021.08.16.22.38.40; Mon, 16 Aug 2021 22:39:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=klN0Nyv8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234237AbhHQFhw (ORCPT + 99 others); Tue, 17 Aug 2021 01:37:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233928AbhHQFhw (ORCPT ); Tue, 17 Aug 2021 01:37:52 -0400 Received: from out1.migadu.com (out1.migadu.com [IPv6:2001:41d0:2:863f::]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A82FCC061764 for ; Mon, 16 Aug 2021 22:37:19 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1629178636; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=qupgUTuI0E9peSKKuud5v7yCUmrTA6ykPIz7pdKMrso=; b=klN0Nyv8cnK9+E8bLBKV5zAFuwmNH3qhFivj/HoycHACDhI68c1pflaeLEVp+x3JkZnEdH JpzwaX/E5qtmwPMc07eQyiuthEfWz+BfPB+fZKu2fhTh/UatTdegVD9eHSIgMXn0NyPczE mnZAeRlii22o9RbqZflP8trpWIWYep4= From: Naoya Horiguchi To: linux-mm@kvack.org Cc: Andrew Morton , Tony Luck , Oscar Salvador , Muchun Song , Mike Kravetz , Michal Hocko , Naoya Horiguchi , linux-kernel@vger.kernel.org Subject: [PATCH v1] mm/hwpoison: Retry with shake_page() for unhandlable pages Date: Tue, 17 Aug 2021 14:37:03 +0900 Message-Id: <20210817053703.2267588-1-naoya.horiguchi@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: naoya.horiguchi@linux.dev Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Naoya Horiguchi HWPoisonHandlable() sometimes returns false for typical user pages due to races with average memory events like transfers over LRU lists. This causes failures in hwpoison handling. There's retry code for such a case but does not work because the retry loop reaches the retry limit too quickly before the page settles down to handlable state. Let get_any_page() call shake_page() to fix it. Fixes: 25182f05ffed ("mm,hwpoison: fix race with hugetlb page allocation") Reported-by: Tony Luck Signed-off-by: Naoya Horiguchi Cc: stable@vger.kernel.org # 5.13 --- mm/memory-failure.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git v5.14-rc6/mm/memory-failure.c v5.14-rc6_patched/mm/memory-failure.c index eefd823deb67..aa6592540f17 100644 --- v5.14-rc6/mm/memory-failure.c +++ v5.14-rc6_patched/mm/memory-failure.c @@ -1146,7 +1146,7 @@ static int __get_hwpoison_page(struct page *page) * unexpected races caused by taking a page refcount. */ if (!HWPoisonHandlable(head)) - return 0; + return -EBUSY; if (PageTransHuge(head)) { /* @@ -1199,9 +1199,14 @@ static int get_any_page(struct page *p, unsigned long flags) } goto out; } else if (ret == -EBUSY) { - /* We raced with freeing huge page to buddy, retry. */ - if (pass++ < 3) + /* + * We raced with (possibly temporary) unhandlable + * page, retry. + */ + if (pass++ < 3) { + shake_page(p, 1); goto try_again; + } goto out; } } -- 2.25.1