Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 86817
b: refs/heads/master
c: 98837c7
h: refs/heads/master
i:
  86815: d278b32
v: v3
  • Loading branch information
Hugh Dickins authored and Linus Torvalds committed Mar 5, 2008
1 parent a154bb8 commit fd3ae75
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 61469f1d51777fc3b6d8d70da8373ee77ee13349
refs/heads/master: 98837c7f82ef78aa38f40462aa2fcac68fd3acbf
19 changes: 14 additions & 5 deletions trunk/mm/migrate.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,6 @@ static void remove_migration_pte(struct vm_area_struct *vma,
return;
}

if (mem_cgroup_charge(new, mm, GFP_KERNEL)) {
pte_unmap(ptep);
return;
}

ptl = pte_lockptr(mm, pmd);
spin_lock(ptl);
pte = *ptep;
Expand All @@ -169,6 +164,20 @@ static void remove_migration_pte(struct vm_area_struct *vma,
if (!is_migration_entry(entry) || migration_entry_to_page(entry) != old)
goto out;

/*
* Yes, ignore the return value from a GFP_ATOMIC mem_cgroup_charge.
* Failure is not an option here: we're now expected to remove every
* migration pte, and will cause crashes otherwise. Normally this
* is not an issue: mem_cgroup_prepare_migration bumped up the old
* page_cgroup count for safety, that's now attached to the new page,
* so this charge should just be another incrementation of the count,
* to keep in balance with rmap.c's mem_cgroup_uncharging. But if
* there's been a force_empty, those reference counts may no longer
* be reliable, and this charge can actually fail: oh well, we don't
* make the situation any worse by proceeding as if it had succeeded.
*/
mem_cgroup_charge(new, mm, GFP_ATOMIC);

get_page(new);
pte = pte_mkold(mk_pte(new, vma->vm_page_prot));
if (is_write_migration_entry(entry))
Expand Down

0 comments on commit fd3ae75

Please sign in to comment.