summaryrefslogtreecommitdiffstats
path: root/kernel/kernel/events/uprobes.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/events/uprobes.c')
-rw-r--r--kernel/kernel/events/uprobes.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/kernel/events/uprobes.c b/kernel/kernel/events/uprobes.c
index 7dad84913..da0c09ff6 100644
--- a/kernel/kernel/events/uprobes.c
+++ b/kernel/kernel/events/uprobes.c
@@ -171,8 +171,10 @@ static int __replace_page(struct vm_area_struct *vma, unsigned long addr,
mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end);
err = -EAGAIN;
ptep = page_check_address(page, mm, addr, &ptl, 0);
- if (!ptep)
+ if (!ptep) {
+ mem_cgroup_cancel_charge(kpage, memcg);
goto unlock;
+ }
get_page(kpage);
page_add_new_anon_rmap(kpage, vma, addr);
@@ -199,7 +201,6 @@ static int __replace_page(struct vm_area_struct *vma, unsigned long addr,
err = 0;
unlock:
- mem_cgroup_cancel_charge(kpage, memcg);
mmu_notifier_invalidate_range_end(mm, mmun_start, mmun_end);
unlock_page(page);
return err;