2011-06-10 23:34:12

by Chris Wright

[permalink] [raw]
Subject: [PATCH] mm: thp: 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: Chris Wright <[email protected]>
---
mm/huge_memory.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 615d974..a032ddd 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1596,14 +1596,13 @@ void __khugepaged_exit(struct mm_struct *mm)
list_del(&mm_slot->mm_node);
free = 1;
}
+ spin_unlock(&khugepaged_mm_lock);

if (free) {
- spin_unlock(&khugepaged_mm_lock);
clear_bit(MMF_VM_HUGEPAGE, &mm->flags);
free_mm_slot(mm_slot);
mmdrop(mm);
} else if (mm_slot) {
- spin_unlock(&khugepaged_mm_lock);
/*
* This is required to serialize against
* khugepaged_test_exit() (which is guaranteed to run
@@ -1614,8 +1613,7 @@ void __khugepaged_exit(struct mm_struct *mm)
*/
down_write(&mm->mmap_sem);
up_write(&mm->mmap_sem);
- } else
- spin_unlock(&khugepaged_mm_lock);
+ }
}

static void release_pte_page(struct page *page)


2011-06-12 10:32:26

by Michal Hocko

[permalink] [raw]
Subject: Re: [PATCH] mm: thp: minor lock simplification in __khugepaged_exit

On Fri 10-06-11 16:33:55, Chris Wright wrote:
> 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: Chris Wright <[email protected]>

Nice cleanup.
Reviewed-by: Michal Hocko <[email protected]>

> ---
> mm/huge_memory.c | 6 ++----
> 1 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 615d974..a032ddd 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1596,14 +1596,13 @@ void __khugepaged_exit(struct mm_struct *mm)
> list_del(&mm_slot->mm_node);
> free = 1;
> }
> + spin_unlock(&khugepaged_mm_lock);
>
> if (free) {
> - spin_unlock(&khugepaged_mm_lock);
> clear_bit(MMF_VM_HUGEPAGE, &mm->flags);
> free_mm_slot(mm_slot);
> mmdrop(mm);
> } else if (mm_slot) {
> - spin_unlock(&khugepaged_mm_lock);
> /*
> * This is required to serialize against
> * khugepaged_test_exit() (which is guaranteed to run
> @@ -1614,8 +1613,7 @@ void __khugepaged_exit(struct mm_struct *mm)
> */
> down_write(&mm->mmap_sem);
> up_write(&mm->mmap_sem);
> - } else
> - spin_unlock(&khugepaged_mm_lock);
> + }
> }
>
> static void release_pte_page(struct page *page)
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [email protected]. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
> Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

--
Michal Hocko
SUSE Labs
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9
Czech Republic

2011-06-14 10:07:06

by Johannes Weiner

[permalink] [raw]
Subject: Re: [PATCH] mm: thp: minor lock simplification in __khugepaged_exit

On Fri, Jun 10, 2011 at 04:33:55PM -0700, Chris Wright wrote:
> 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: Chris Wright <[email protected]>

Acked-by: Johannes Weiner <[email protected]>