X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fmemory-failure.c;h=dacc64183874c739e6a501c780d28ee220c4ac2b;hb=9d0ed60fe9cd1fbf57f755cd27a23ae9114d7210;hp=e17ec3f1c63718ca2b5f5ad726a9cc6f4328d7f8;hpb=e43c3afb367112a5b357f9adfac7817255129c88;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/memory-failure.c b/mm/memory-failure.c index e17ec3f..dacc641 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -612,13 +613,16 @@ static int page_action(struct page_state *ps, struct page *p, unsigned long pfn, int ref) { int result; + int count; result = ps->action(p, pfn); action_result(pfn, ps->msg, result); - if (page_count(p) != 1 + ref) + + count = page_count(p) - 1 - ref; + if (count != 0) printk(KERN_ERR "MCE %#lx: %s page still referenced by %d users\n", - pfn, ps->msg, page_count(p) - 1); + pfn, ps->msg, count); /* Could do more checks here if page looks ok */ /* @@ -644,7 +648,7 @@ static void hwpoison_user_mappings(struct page *p, unsigned long pfn, int i; int kill = 1; - if (PageReserved(p) || PageCompound(p) || PageSlab(p)) + if (PageReserved(p) || PageCompound(p) || PageSlab(p) || PageKsm(p)) return; /*