Commit 4779cb31 authored by Andi Kleen's avatar Andi Kleen

HWPOISON: Fix page count leak in hwpoison late kill in do_swap_page

When returning due to a poisoned page drop the page count.

It wasn't a fatal problem because noone cares about the page count
on a poisoned page (except when it wraps), but it's cleaner to fix it.

Pointed out by Linus.
Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
parent e43c3afb
...@@ -2539,7 +2539,7 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, ...@@ -2539,7 +2539,7 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
} else if (PageHWPoison(page)) { } else if (PageHWPoison(page)) {
ret = VM_FAULT_HWPOISON; ret = VM_FAULT_HWPOISON;
delayacct_clear_flag(DELAYACCT_PF_SWAPIN); delayacct_clear_flag(DELAYACCT_PF_SWAPIN);
goto out; goto out_release;
} }
lock_page(page); lock_page(page);
...@@ -2611,6 +2611,7 @@ out_nomap: ...@@ -2611,6 +2611,7 @@ out_nomap:
pte_unmap_unlock(page_table, ptl); pte_unmap_unlock(page_table, ptl);
out_page: out_page:
unlock_page(page); unlock_page(page);
out_release:
page_cache_release(page); page_cache_release(page);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment