diff options
| author | Ingo Molnar <mingo@kernel.org> | 2013-12-17 09:27:08 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2013-12-17 09:27:08 -0500 |
| commit | bb799d3b980eb803ca2da4a4eefbd9308f8d988a (patch) | |
| tree | 69fbe0cd6d47b23a50f5e1d87bf7489532fae149 /mm/huge_memory.c | |
| parent | 919fc6e34831d1c2b58bfb5ae261dc3facc9b269 (diff) | |
| parent | 319e2e3f63c348a9b66db4667efa73178e18b17d (diff) | |
Merge tag 'v3.13-rc4' into core/locking
Merge Linux 3.13-rc4, to refresh this rather old tree with the latest fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'mm/huge_memory.c')
| -rw-r--r-- | mm/huge_memory.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index bccd5a628ea6..33a5dc492810 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c | |||
| @@ -1481,8 +1481,18 @@ int move_huge_pmd(struct vm_area_struct *vma, struct vm_area_struct *new_vma, | |||
| 1481 | pmd = pmdp_get_and_clear(mm, old_addr, old_pmd); | 1481 | pmd = pmdp_get_and_clear(mm, old_addr, old_pmd); |
| 1482 | VM_BUG_ON(!pmd_none(*new_pmd)); | 1482 | VM_BUG_ON(!pmd_none(*new_pmd)); |
| 1483 | set_pmd_at(mm, new_addr, new_pmd, pmd_mksoft_dirty(pmd)); | 1483 | set_pmd_at(mm, new_addr, new_pmd, pmd_mksoft_dirty(pmd)); |
| 1484 | if (new_ptl != old_ptl) | 1484 | if (new_ptl != old_ptl) { |
| 1485 | pgtable_t pgtable; | ||
| 1486 | |||
| 1487 | /* | ||
| 1488 | * Move preallocated PTE page table if new_pmd is on | ||
| 1489 | * different PMD page table. | ||
| 1490 | */ | ||
| 1491 | pgtable = pgtable_trans_huge_withdraw(mm, old_pmd); | ||
| 1492 | pgtable_trans_huge_deposit(mm, new_pmd, pgtable); | ||
| 1493 | |||
| 1485 | spin_unlock(new_ptl); | 1494 | spin_unlock(new_ptl); |
| 1495 | } | ||
| 1486 | spin_unlock(old_ptl); | 1496 | spin_unlock(old_ptl); |
| 1487 | } | 1497 | } |
| 1488 | out: | 1498 | out: |
