Re: [PATCH v1] mm, hwpoison: do not lock page again when me_huge_page() successfully recovers

From: Oscar Salvador
Date: Fri Mar 05 2021 - 02:27:04 EST


On Thu, Mar 04, 2021 at 03:44:37PM +0900, Naoya Horiguchi wrote:
> From: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>

Hi Naoya,

good catch!

> 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.

I am having difficulties to parse "PG_hwpoison does not prevent it because
PG_hwpoison flag is set on any subpage of the hugetlb page".

What do you mean by that?

>
> 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@xxxxxxxxxxxxxxx
> Signed-off-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>

The fix looks fine to me:

Reviewed-by: Oscar Salvador <osalvador@xxxxxxx>



--
Oscar Salvador
SUSE L3