mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
mm, thp: do not access mm->pmd_huge_pte directly
Currently mm->pmd_huge_pte protected by page table lock. It will not work with split lock. We have to have per-pmd pmd_huge_pte for proper access serialization. For now, let's just introduce wrapper to access mm->pmd_huge_pte. Signed-off-by: Kirill A. Shutemov <[email protected]> Tested-by: Alex Thorlton <[email protected]> Cc: Alex Thorlton <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Naoya Horiguchi <[email protected]> Cc: "Eric W . Biederman" <[email protected]> Cc: "Paul E . McKenney" <[email protected]> Cc: Al Viro <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Andrea Arcangeli <[email protected]> Cc: Dave Hansen <[email protected]> Cc: Dave Jones <[email protected]> Cc: David Howells <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Johannes Weiner <[email protected]> Cc: Kees Cook <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Michael Kerrisk <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Robin Holt <[email protected]> Cc: Sedat Dilek <[email protected]> Cc: Srikar Dronamraju <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Hugh Dickins <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
117b0791ac
commit
c389a250ab
4 changed files with 19 additions and 18 deletions
|
|
@ -154,11 +154,11 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
|
|||
assert_spin_locked(&mm->page_table_lock);
|
||||
|
||||
/* FIFO */
|
||||
if (!mm->pmd_huge_pte)
|
||||
if (!pmd_huge_pte(mm, pmdp))
|
||||
INIT_LIST_HEAD(&pgtable->lru);
|
||||
else
|
||||
list_add(&pgtable->lru, &mm->pmd_huge_pte->lru);
|
||||
mm->pmd_huge_pte = pgtable;
|
||||
list_add(&pgtable->lru, &pmd_huge_pte(mm, pmdp)->lru);
|
||||
pmd_huge_pte(mm, pmdp) = pgtable;
|
||||
}
|
||||
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
||||
#endif
|
||||
|
|
@ -173,11 +173,11 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
|
|||
assert_spin_locked(&mm->page_table_lock);
|
||||
|
||||
/* FIFO */
|
||||
pgtable = mm->pmd_huge_pte;
|
||||
pgtable = pmd_huge_pte(mm, pmdp);
|
||||
if (list_empty(&pgtable->lru))
|
||||
mm->pmd_huge_pte = NULL;
|
||||
pmd_huge_pte(mm, pmdp) = NULL;
|
||||
else {
|
||||
mm->pmd_huge_pte = list_entry(pgtable->lru.next,
|
||||
pmd_huge_pte(mm, pmdp) = list_entry(pgtable->lru.next,
|
||||
struct page, lru);
|
||||
list_del(&pgtable->lru);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue