diff options
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r-- | mm/memory-failure.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 745f61082ce5..275f4e2df8ac 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
@@ -618,13 +618,11 @@ static struct page_state { | |||
618 | 618 | ||
619 | static void action_result(unsigned long pfn, char *msg, int result) | 619 | static void action_result(unsigned long pfn, char *msg, int result) |
620 | { | 620 | { |
621 | struct page *page = NULL; | 621 | struct page *page = pfn_to_page(pfn); |
622 | if (pfn_valid(pfn)) | ||
623 | page = pfn_to_page(pfn); | ||
624 | 622 | ||
625 | printk(KERN_ERR "MCE %#lx: %s%s page recovery: %s\n", | 623 | printk(KERN_ERR "MCE %#lx: %s%s page recovery: %s\n", |
626 | pfn, | 624 | pfn, |
627 | page && PageDirty(page) ? "dirty " : "", | 625 | PageDirty(page) ? "dirty " : "", |
628 | msg, action_name[result]); | 626 | msg, action_name[result]); |
629 | } | 627 | } |
630 | 628 | ||
@@ -750,8 +748,10 @@ int __memory_failure(unsigned long pfn, int trapno, int ref) | |||
750 | panic("Memory failure from trap %d on page %lx", trapno, pfn); | 748 | panic("Memory failure from trap %d on page %lx", trapno, pfn); |
751 | 749 | ||
752 | if (!pfn_valid(pfn)) { | 750 | if (!pfn_valid(pfn)) { |
753 | action_result(pfn, "memory outside kernel control", IGNORED); | 751 | printk(KERN_ERR |
754 | return -EIO; | 752 | "MCE %#lx: memory outside kernel control\n", |
753 | pfn); | ||
754 | return -ENXIO; | ||
755 | } | 755 | } |
756 | 756 | ||
757 | p = pfn_to_page(pfn); | 757 | p = pfn_to_page(pfn); |