uprobes: Add mem_cgroup_charge_anon() into uprobe_write_opcode()
authorOleg Nesterov <oleg@redhat.com>
Mon, 5 May 2014 14:38:18 +0000 (16:38 +0200)
committerOleg Nesterov <oleg@redhat.com>
Wed, 14 May 2014 11:57:24 +0000 (13:57 +0200)
commit29dedee0e693aa113164c820395ce51446a71ace
tree7dff2a1f28a6c2d300c14fbe3674f3756f4dea7a
parent8e02ae573e6ae86930d08662790827a938203e70
uprobes: Add mem_cgroup_charge_anon() into uprobe_write_opcode()

Hugh says:

    The one I noticed was that it forgets all about memcg (because
    it was copied from KSM, and there the replacement page has already
    been charged to a memcg). See how mm/memory.c do_anonymous_page()
    does a mem_cgroup_charge_anon().

Hopefully not a big problem, uprobes is a system-wide thing and only
root can insert the probes. But I agree, should be fixed anyway.

Add mem_cgroup_{un,}charge_anon() into uprobe_write_opcode(). To simplify
the error handling (and avoid the new "uncharge" label) the patch also
moves anon_vma_prepare() up before we alloc/charge the new page.

While at it fix the comment about ->mmap_sem, it is held for write.

Suggested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
kernel/events/uprobes.c