Skip to content

Commit 7ad48c5

Browse files
davidhildenbrandsmb49
authored andcommitted
mm/memory-failure.c: don't access uninitialized memmaps in memory_failure()
BugLink: https://bugs.launchpad.net/bugs/1850456 commit 96c804a upstream. We should check for pfn_to_online_page() to not access uninitialized memmaps. Reshuffle the code so we don't have to duplicate the error message. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: David Hildenbrand <[email protected]> Fixes: f1dd2cd ("mm, memory_hotplug: do not associate hotadded memory to zones until online") [visible after d0dc12e] Acked-by: Naoya Horiguchi <[email protected]> Cc: Michal Hocko <[email protected]> Cc: <[email protected]> [4.13+] Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: Connor Kuehl <[email protected]> Signed-off-by: Kleber Sacilotto de Souza <[email protected]>
1 parent a9262db commit 7ad48c5

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

mm/memory-failure.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,17 +1253,19 @@ int memory_failure(unsigned long pfn, int flags)
12531253
if (!sysctl_memory_failure_recovery)
12541254
panic("Memory failure on page %lx", pfn);
12551255

1256-
if (!pfn_valid(pfn)) {
1256+
p = pfn_to_online_page(pfn);
1257+
if (!p) {
1258+
if (pfn_valid(pfn)) {
1259+
pgmap = get_dev_pagemap(pfn, NULL);
1260+
if (pgmap)
1261+
return memory_failure_dev_pagemap(pfn, flags,
1262+
pgmap);
1263+
}
12571264
pr_err("Memory failure: %#lx: memory outside kernel control\n",
12581265
pfn);
12591266
return -ENXIO;
12601267
}
12611268

1262-
pgmap = get_dev_pagemap(pfn, NULL);
1263-
if (pgmap)
1264-
return memory_failure_dev_pagemap(pfn, flags, pgmap);
1265-
1266-
p = pfn_to_page(pfn);
12671269
if (PageHuge(p))
12681270
return memory_failure_hugetlb(pfn, flags);
12691271
if (TestSetPageHWPoison(p)) {

0 commit comments

Comments
 (0)