All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] futex: remove the pointer math from double_unlock_hb
@ 2009-03-12 22:11 Darren Hart
  2009-03-13  0:18 ` [tip:core/futexes] " Darren Hart
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Darren Hart @ 2009-03-12 22:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Darren Hart, Thomas Gleixner, Peter Zijlstra, Ingo Molnar, Rusty Russell

I mistakenly included the pointer value ordering in the double_unlock_hb
in my previous patch.  It's only necessary in the double_lock_hb
function.  This patch removes it.

Signed-off-by: Darren Hart <dvhltc@us.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Rusty Russell <rusty@rustcorp.com.au>
---

 kernel/futex.c |   10 ++--------
 1 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/kernel/futex.c b/kernel/futex.c
index 9c97f67..2331b73 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -658,14 +658,8 @@ double_lock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
 static inline void
 double_unlock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
 {
-	if (hb1 <= hb2) {
-		spin_unlock(&hb2->lock);
-		if (hb1 < hb2)
-			spin_unlock(&hb1->lock);
-	} else { /* hb1 > hb2 */
-		spin_unlock(&hb1->lock);
-		spin_unlock(&hb2->lock);
-	}
+	spin_unlock(&hb1->lock);
+	spin_unlock(&hb2->lock);
 }
 
 /*


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [tip:core/futexes] futex: remove the pointer math from double_unlock_hb
  2009-03-12 22:11 [PATCH] futex: remove the pointer math from double_unlock_hb Darren Hart
@ 2009-03-13  0:18 ` Darren Hart
  2009-03-13  9:26 ` [PATCH] " Thomas Gleixner
  2009-03-13  9:36 ` [tip:core/futexes] futex: remove the pointer math from double_unlock_hb, fix Ingo Molnar
  2 siblings, 0 replies; 5+ messages in thread
From: Darren Hart @ 2009-03-13  0:18 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, dvhltc, hpa, mingo, rusty, peterz, tglx, mingo

Commit-ID:  f061d35150003b7fd5b133d14d66a74500fdaa60
Gitweb:     http://git.kernel.org/tip/f061d35150003b7fd5b133d14d66a74500fdaa60
Author:     Darren Hart <dvhltc@us.ibm.com>
AuthorDate: Thu, 12 Mar 2009 15:11:18 -0700
Commit:     Ingo Molnar <mingo@elte.hu>
CommitDate: Fri, 13 Mar 2009 01:15:46 +0100

futex: remove the pointer math from double_unlock_hb

Impact: simplify code

I mistakenly included the pointer value ordering in the
double_unlock_hb() in my previous patch. It's only necessary
in the double_lock_hb() function. This patch removes it.

Signed-off-by: Darren Hart <dvhltc@us.ibm.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
LKML-Reference: <20090312221118.11146.68610.stgit@Aeon>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/futex.c |   10 ++--------
 1 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/kernel/futex.c b/kernel/futex.c
index 9c97f67..2331b73 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -658,14 +658,8 @@ double_lock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
 static inline void
 double_unlock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
 {
-	if (hb1 <= hb2) {
-		spin_unlock(&hb2->lock);
-		if (hb1 < hb2)
-			spin_unlock(&hb1->lock);
-	} else { /* hb1 > hb2 */
-		spin_unlock(&hb1->lock);
-		spin_unlock(&hb2->lock);
-	}
+	spin_unlock(&hb1->lock);
+	spin_unlock(&hb2->lock);
 }
 
 /*

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] futex: remove the pointer math from double_unlock_hb
  2009-03-12 22:11 [PATCH] futex: remove the pointer math from double_unlock_hb Darren Hart
  2009-03-13  0:18 ` [tip:core/futexes] " Darren Hart
@ 2009-03-13  9:26 ` Thomas Gleixner
  2009-03-13  9:36 ` [tip:core/futexes] futex: remove the pointer math from double_unlock_hb, fix Ingo Molnar
  2 siblings, 0 replies; 5+ messages in thread
From: Thomas Gleixner @ 2009-03-13  9:26 UTC (permalink / raw)
  To: Darren Hart; +Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Rusty Russell

On Thu, 12 Mar 2009, Darren Hart wrote:
> I mistakenly included the pointer value ordering in the double_unlock_hb
> in my previous patch.  It's only necessary in the double_lock_hb
> function.  This patch removes it.
> 
> Signed-off-by: Darren Hart <dvhltc@us.ibm.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: Rusty Russell <rusty@rustcorp.com.au>
> ---
> 
>  kernel/futex.c |   10 ++--------
>  1 files changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/kernel/futex.c b/kernel/futex.c
> index 9c97f67..2331b73 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -658,14 +658,8 @@ double_lock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
>  static inline void
>  double_unlock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
>  {
> -	if (hb1 <= hb2) {
> -		spin_unlock(&hb2->lock);
> -		if (hb1 < hb2)
> -			spin_unlock(&hb1->lock);
> -	} else { /* hb1 > hb2 */
> -		spin_unlock(&hb1->lock);
> -		spin_unlock(&hb2->lock);
> -	}
> +	spin_unlock(&hb1->lock);
> +	spin_unlock(&hb2->lock);

This is missing the check for hb1 == hb2. As I said before:

> Can we just put the code into double_unlock_hb() which gets replaced ?
>
> i.e:
>
>        spin_unlock(&hb1->lock);
>        if (hb1 != hb2)
>              spin_unlock(&hb2->lock);

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:core/futexes] futex: remove the pointer math from double_unlock_hb, fix
  2009-03-12 22:11 [PATCH] futex: remove the pointer math from double_unlock_hb Darren Hart
  2009-03-13  0:18 ` [tip:core/futexes] " Darren Hart
  2009-03-13  9:26 ` [PATCH] " Thomas Gleixner
@ 2009-03-13  9:36 ` Ingo Molnar
  2009-03-13 15:03   ` Darren Hart
  2 siblings, 1 reply; 5+ messages in thread
From: Ingo Molnar @ 2009-03-13  9:36 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, dvhltc, hpa, mingo, tglx, mingo

Commit-ID:  88f502fedba82eff252b6420e8b8328e4ae25c67
Gitweb:     http://git.kernel.org/tip/88f502fedba82eff252b6420e8b8328e4ae25c67
Author:     Ingo Molnar <mingo@elte.hu>
AuthorDate: Fri, 13 Mar 2009 10:32:07 +0100
Commit:     Ingo Molnar <mingo@elte.hu>
CommitDate: Fri, 13 Mar 2009 10:32:07 +0100

futex: remove the pointer math from double_unlock_hb, fix

Impact: fix double unlock crash

Thomas Gleixner noticed that the simplified double_unlock_hb()
became ... too unsophisticated: in the hb1 == hb2 case it will
do a double unlock.

Reported-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Darren Hart <dvhltc@us.ibm.com>
LKML-Reference: <20090312221118.11146.68610.stgit@Aeon>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/futex.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/futex.c b/kernel/futex.c
index 2331b73..6b50a02 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -659,7 +659,8 @@ static inline void
 double_unlock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
 {
 	spin_unlock(&hb1->lock);
-	spin_unlock(&hb2->lock);
+	if (hb1 != hb2)
+		spin_unlock(&hb2->lock);
 }
 
 /*

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [tip:core/futexes] futex: remove the pointer math from double_unlock_hb, fix
  2009-03-13  9:36 ` [tip:core/futexes] futex: remove the pointer math from double_unlock_hb, fix Ingo Molnar
@ 2009-03-13 15:03   ` Darren Hart
  0 siblings, 0 replies; 5+ messages in thread
From: Darren Hart @ 2009-03-13 15:03 UTC (permalink / raw)
  To: mingo, hpa, linux-kernel, tglx, mingo; +Cc: linux-tip-commits

Ingo Molnar wrote:
> Commit-ID:  88f502fedba82eff252b6420e8b8328e4ae25c67
> Gitweb:     http://git.kernel.org/tip/88f502fedba82eff252b6420e8b8328e4ae25c67
> Author:     Ingo Molnar <mingo@elte.hu>
> AuthorDate: Fri, 13 Mar 2009 10:32:07 +0100
> Commit:     Ingo Molnar <mingo@elte.hu>
> CommitDate: Fri, 13 Mar 2009 10:32:07 +0100
> 
> futex: remove the pointer math from double_unlock_hb, fix
> 
> Impact: fix double unlock crash
> 
> Thomas Gleixner noticed that the simplified double_unlock_hb()
> became ... too unsophisticated: in the hb1 == hb2 case it will
> do a double unlock.

Gah.  Thanks for catching it.

> 
> Reported-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Darren Hart <dvhltc@us.ibm.com>
> LKML-Reference: <20090312221118.11146.68610.stgit@Aeon>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>

Acked-by: Darren Hart <dvhltc@us.ibm.com>

> 
> 
> ---
>  kernel/futex.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/kernel/futex.c b/kernel/futex.c
> index 2331b73..6b50a02 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -659,7 +659,8 @@ static inline void
>  double_unlock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2)
>  {
>  	spin_unlock(&hb1->lock);
> -	spin_unlock(&hb2->lock);
> +	if (hb1 != hb2)
> +		spin_unlock(&hb2->lock);
>  }
> 
>  /*


-- 
Darren Hart
IBM Linux Technology Center
Real-Time Linux Team

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-03-13 15:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-12 22:11 [PATCH] futex: remove the pointer math from double_unlock_hb Darren Hart
2009-03-13  0:18 ` [tip:core/futexes] " Darren Hart
2009-03-13  9:26 ` [PATCH] " Thomas Gleixner
2009-03-13  9:36 ` [tip:core/futexes] futex: remove the pointer math from double_unlock_hb, fix Ingo Molnar
2009-03-13 15:03   ` Darren Hart

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.