提交 d788e80a 编写于 作者: C Chris Wright 提交者: Linus Torvalds

mm/huge_memory.c: minor lock simplification in __khugepaged_exit

The lock is released first thing in all three branches.  Simplify this by
unconditionally releasing lock and remove else clause which was only there
to be sure lock was released.
Signed-off-by: NChris Wright <chrisw@sous-sol.org>
Reviewed-by: NMichal Hocko <mhocko@suse.cz>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Acked-by: NJohannes Weiner <jweiner@redhat.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 1bb36fbd
...@@ -1596,14 +1596,13 @@ void __khugepaged_exit(struct mm_struct *mm) ...@@ -1596,14 +1596,13 @@ void __khugepaged_exit(struct mm_struct *mm)
list_del(&mm_slot->mm_node); list_del(&mm_slot->mm_node);
free = 1; free = 1;
} }
spin_unlock(&khugepaged_mm_lock);
if (free) { if (free) {
spin_unlock(&khugepaged_mm_lock);
clear_bit(MMF_VM_HUGEPAGE, &mm->flags); clear_bit(MMF_VM_HUGEPAGE, &mm->flags);
free_mm_slot(mm_slot); free_mm_slot(mm_slot);
mmdrop(mm); mmdrop(mm);
} else if (mm_slot) { } else if (mm_slot) {
spin_unlock(&khugepaged_mm_lock);
/* /*
* This is required to serialize against * This is required to serialize against
* khugepaged_test_exit() (which is guaranteed to run * khugepaged_test_exit() (which is guaranteed to run
...@@ -1614,8 +1613,7 @@ void __khugepaged_exit(struct mm_struct *mm) ...@@ -1614,8 +1613,7 @@ void __khugepaged_exit(struct mm_struct *mm)
*/ */
down_write(&mm->mmap_sem); down_write(&mm->mmap_sem);
up_write(&mm->mmap_sem); up_write(&mm->mmap_sem);
} else }
spin_unlock(&khugepaged_mm_lock);
} }
static void release_pte_page(struct page *page) static void release_pte_page(struct page *page)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册