diff options
author | Alex Shi <alex.shi@linaro.org> | 2017-07-18 14:31:54 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2017-07-18 14:31:54 +0800 |
commit | 16e243013beb93902693c4bb90e4348c99588429 (patch) | |
tree | 6a5858d948085974ef1f26bb1e4b546cfb44cfc5 /mm/huge_memory.c | |
parent | 2120557722577d8cff75a33a799ad15582dbd8ef (diff) | |
parent | 5289d9c979092878f2bf741d8b365ef7565fb6db (diff) |
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-androidlsk-v4.4-17.07-android
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r-- | mm/huge_memory.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 47b469663822..6c6f5ccfcda1 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1363,8 +1363,11 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, */ if (unlikely(pmd_trans_migrating(*pmdp))) { page = pmd_page(*pmdp); + if (!get_page_unless_zero(page)) + goto out_unlock; spin_unlock(ptl); wait_on_page_locked(page); + put_page(page); goto out; } @@ -1396,8 +1399,11 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, /* Migration could have started since the pmd_trans_migrating check */ if (!page_locked) { + if (!get_page_unless_zero(page)) + goto out_unlock; spin_unlock(ptl); wait_on_page_locked(page); + put_page(page); page_nid = -1; goto out; } |