From: Ingo Molnar <mingo@elte.hu>
To: Darren Hart <dvhltc@us.ibm.com>
Cc: linux-kernel@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Rusty Russell <rusty@au1.ibm.com>
Subject: Re: [PATCH 2/2] futex: correct futex_requeue futex key ref counting in requeue loop
Date: Fri, 2 Jan 2009 23:13:10 +0100 [thread overview]
Message-ID: <20090102221310.GE17240@elte.hu> (raw)
In-Reply-To: <495AB065.3080707@us.ibm.com>
* Darren Hart <dvhltc@us.ibm.com> wrote:
> Darren Hart wrote:
>> The requeue loop takes multiple references to key2, but the corresponding
>> put loop decrements the refs for key1. This patch corrects the accounting.
>>
>> Build and boot tested on an x86_64 system.
>>
>> Signed-off-by: Darren Hart <dvhltc@us.ibm.com>
>> Cc: Peter Zijlstra <peterz@infradead.org>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> Cc: Rusty Russell <rusty@au1.ibm.com>
>> ---
>>
>> kernel/futex.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/kernel/futex.c b/kernel/futex.c
>> index cf363ce..3b66d91 100644
>> --- a/kernel/futex.c
>> +++ b/kernel/futex.c
>> @@ -919,7 +919,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);
>>
>> put_futex_key(fshared, &key2);
>> out_put_key1:
>>
>
> Ugh, so I'm having second thoughts about this patch. 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.
>
> I apologize for the confusion on this. Thanks for suggesting I send
> this patch out independently from the rest Peter ;-)
>
> If we can come to a consensus on this, I suggest pulling this patch from
> tip/core/futexes.
ok, i zapped it. The patches remaining are:
90621c4: futex: catch certain assymetric (get|put)_futex_key calls
42d35d4: futex: make futex_(get|put)_key() calls symmetric
Ingo
next prev parent reply other threads:[~2009-01-02 22:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-29 18:53 [PATCH 0/2] futex_key reference accounting fixes Darren Hart
2008-12-29 18:53 ` [PATCH 1/2] futex: make futex_(get|put)_key() calls symmetric Darren Hart
2008-12-29 23:49 ` Darren Hart
2008-12-29 18:54 ` [PATCH 2/2] futex: correct futex_requeue futex key ref counting in requeue loop Darren Hart
2008-12-30 23:36 ` Darren Hart
2009-01-02 22:13 ` Ingo Molnar [this message]
2008-12-30 5:39 ` [PATCH 0/2] futex_key reference accounting fixes Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090102221310.GE17240@elte.hu \
--to=mingo@elte.hu \
--cc=dvhltc@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=rusty@au1.ibm.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.