On Mon, 2009-01-26 at 08:39 -0800, Darren Hart wrote: > > diff --git a/kernel/futex.c b/kernel/futex.c > > index f89d373..f4132ab 100644 > > --- a/kernel/futex.c > > +++ b/kernel/futex.c > > @@ -929,7 +929,7 @@ out_unlock: > > > > /* drop_futex_key_refs() must be called outside the spinlocks. */ > > while (--drop_count >= 0) > > - drop_futex_key_refs(&key1); > > + drop_futex_key_refs(&key2); > > Unfortunately, I realized later that this code was indeed correct and I > asked Ingo to pull my patch implementing the above change. Quoting my > previous mail on the subject: > > "I believe what is happening here is that the requeue loop requeues each > waiter from one futex (key1) to another (key2). It rightly takes a > reference to the futex at key2 and then decrements the references to > key1 by drop_count (since the waiters now reference key2, not key1). > The newly taken key2 references will be dropped in futex_wait() when > each waiter is woken up and takes the futex." Argh, that wants a comment.. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html