diff options
| -rw-r--r-- | mm/memory-failure.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 4f08a2d61487..2f2f34a4e77d 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
| @@ -945,8 +945,10 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn, | |||
| 945 | * to it. Similarly, page lock is shifted. | 945 | * to it. Similarly, page lock is shifted. |
| 946 | */ | 946 | */ |
| 947 | if (hpage != p) { | 947 | if (hpage != p) { |
| 948 | put_page(hpage); | 948 | if (!(flags & MF_COUNT_INCREASED)) { |
| 949 | get_page(p); | 949 | put_page(hpage); |
| 950 | get_page(p); | ||
| 951 | } | ||
| 950 | lock_page(p); | 952 | lock_page(p); |
| 951 | unlock_page(hpage); | 953 | unlock_page(hpage); |
| 952 | *hpagep = p; | 954 | *hpagep = p; |
