FAILED: patch "[PATCH] uprobes: Fix the memcg accounting" failed to apply to 3.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 3.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
6c4687cc17a788a6dd8de3e27dbeabb7cbd3e066Mon Sep 17 00:00:00 2001
From: Oleg Nesterov <[email protected]>
Date: Wed, 17 Aug 2016 17:36:29 +0200
Subject: [PATCH] uprobes: Fix the memcg accounting
__replace_page() wronlgy calls mem_cgroup_cancel_charge() in "success" path, it should only do this if page_check_address() fails.
This means that every enable/disable leads to unbalanced mem_cgroup_uncharge() from put_page(old_page), it is trivial to underflow the page_counter->count and trigger OOM.
kernel/events/uprobes.c +3 -2
@@ -172,8 +172,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, false); goto unlock; + }get_page (kpage);page_add_new_anon_rmap (kpage, vma, addr, false);
@@ -200,7 +202,6 @@ static int __replace_page(struct vm_area_struct *vma, unsigned long addr, err =0 ; unlock: -mem_cgroup_cancel_charge (kpage, memcg, false);mmu_notifier_invalidate_range_end (mm, mmun_start, mmun_end);unlock_page (page);return err;
Greg KH
maintainerQuoted 5 lines · On Fri, Sep 02, 2016 at 04:10:02PM +0200, [email protected] wrote:
The patch below does not apply to the 3.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Oh nevermind, it wasn't supposed to go to 3.14, sorry for the noise...
greg k-h