diff --git a/[refs] b/[refs] index 5bed175b1530..7dc9767b11fb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 47c59803becb55b72b26cdab3838d621a15badc8 +refs/heads/master: 073e587ec2cc377867e53d8b8959738a8e16cff6 diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index ba86b436b85f..54cf20ee0a83 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -2326,16 +2326,17 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, count_vm_event(PGMAJFAULT); } + mark_page_accessed(page); + + lock_page(page); + delayacct_clear_flag(DELAYACCT_PF_SWAPIN); + if (mem_cgroup_charge(page, mm, GFP_KERNEL)) { - delayacct_clear_flag(DELAYACCT_PF_SWAPIN); ret = VM_FAULT_OOM; + unlock_page(page); goto out; } - mark_page_accessed(page); - lock_page(page); - delayacct_clear_flag(DELAYACCT_PF_SWAPIN); - /* * Back out if somebody else already faulted in this pte. */