Skip to content

Commit acfa299

Browse files
nhoriguchitorvalds
authored andcommitted
mm, hwpoison: add is_free_buddy_page() in HWPoisonHandlable()
Commit fcc0062 ("mm/hwpoison: retry with shake_page() for unhandlable pages") changed the return value of __get_hwpoison_page() to retry for transiently unhandlable cases. However, __get_hwpoison_page() currently fails to properly judge buddy pages as handlable, so hard/soft offline for buddy pages always fail as "unhandlable page". This is totally regrettable. So let's add is_free_buddy_page() in HWPoisonHandlable(), so that __get_hwpoison_page() returns different return values between buddy pages and unhandlable pages as intended. Link: https://lkml.kernel.org/r/[email protected] Fixes: fcc0062 ("mm/hwpoison: retry with shake_page() for unhandlable pages") Signed-off-by: Naoya Horiguchi <[email protected]> Acked-by: David Hildenbrand <[email protected]> Reviewed-by: Yang Shi <[email protected]> Cc: Tony Luck <[email protected]> Cc: Oscar Salvador <[email protected]> Cc: Mike Kravetz <[email protected]> Cc: Michal Hocko <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 7d42e98 commit acfa299

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

mm/memory-failure.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1126,7 +1126,7 @@ static int page_action(struct page_state *ps, struct page *p,
11261126
*/
11271127
static inline bool HWPoisonHandlable(struct page *page)
11281128
{
1129-
return PageLRU(page) || __PageMovable(page);
1129+
return PageLRU(page) || __PageMovable(page) || is_free_buddy_page(page);
11301130
}
11311131

11321132
static int __get_hwpoison_page(struct page *page)

0 commit comments

Comments
 (0)