Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 230766
b: refs/heads/master
c: 3f04f62
h: refs/heads/master
v: v3
  • Loading branch information
Andrea Arcangeli authored and Linus Torvalds committed Jan 14, 2011
1 parent 24ebed3 commit 569c01f
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bae9c19bf12bb2a914a8e530270f41d36cc87c63
refs/heads/master: 3f04f62f90d46a82dd73027c5fd7a15daed5c33d
2 changes: 2 additions & 0 deletions trunk/mm/memory-failure.c
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,8 @@ static void collect_procs_anon(struct page *page, struct list_head *to_kill,
struct task_struct *tsk;
struct anon_vma *av;

if (unlikely(split_huge_page(page)))
return;
read_lock(&tasklist_lock);
av = page_lock_anon_vma(page);
if (av == NULL) /* Not actually mapped anymore */
Expand Down
1 change: 1 addition & 0 deletions trunk/mm/rmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1400,6 +1400,7 @@ int try_to_unmap(struct page *page, enum ttu_flags flags)
int ret;

BUG_ON(!PageLocked(page));
BUG_ON(PageTransHuge(page));

if (unlikely(PageKsm(page)))
ret = try_to_unmap_ksm(page, flags);
Expand Down
6 changes: 6 additions & 0 deletions trunk/mm/swap_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@ int add_to_swap(struct page *page)
if (!entry.val)
return 0;

if (unlikely(PageTransHuge(page)))
if (unlikely(split_huge_page(page))) {
swapcache_free(entry, NULL);
return 0;
}

/*
* Radix-tree node allocations from PF_MEMALLOC contexts could
* completely exhaust the page allocator. __GFP_NOMEMALLOC
Expand Down
2 changes: 2 additions & 0 deletions trunk/mm/swapfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -964,6 +964,8 @@ static inline int unuse_pmd_range(struct vm_area_struct *vma, pud_t *pud,
pmd = pmd_offset(pud, addr);
do {
next = pmd_addr_end(addr, end);
if (unlikely(pmd_trans_huge(*pmd)))
continue;
if (pmd_none_or_clear_bad(pmd))
continue;
ret = unuse_pte_range(vma, pmd, addr, next, entry, page);
Expand Down

0 comments on commit 569c01f

Please sign in to comment.