When get_hwpoison_page() returns a negative value, distinguish reserved pages from other failure cases by reporting MF_MSG_KERNEL instead of MF_MSG_GET_HWPOISON. Reserved pages belong to the kernel and should be classified accordingly for proper handling. Signed-off-by: Breno Leitao --- mm/memory-failure.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index ee42d43613097..7b67e43dafbd1 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2432,7 +2432,16 @@ int memory_failure(unsigned long pfn, int flags) } goto unlock_mutex; } else if (res < 0) { - res = action_result(pfn, MF_MSG_GET_HWPOISON, MF_IGNORED); + /* + * PageReserved is stable here: reserved pages have + * PG_reserved set at boot or by drivers and are never + * freed through the page allocator. + */ + if (PageReserved(p)) + res = action_result(pfn, MF_MSG_KERNEL, MF_IGNORED); + else + res = action_result(pfn, MF_MSG_GET_HWPOISON, + MF_IGNORED); goto unlock_mutex; } -- 2.52.0