* Re: Robust futex patch for Linux 2.6.15 [not found] <b324b5ad0601131316m721f959eu37b741f9e5557a2e@mail.gmail.com> @ 2006-01-13 21:27 ` Andrew Morton 2006-01-13 22:20 ` Andi Kleen 2006-01-14 16:13 ` Matan Peled 0 siblings, 2 replies; 6+ messages in thread From: Andrew Morton @ 2006-01-13 21:27 UTC (permalink / raw) To: David Singleton; +Cc: mingo, linux-kernel, drepper, robustmutexes David Singleton <daviado@gmail.com> wrote: > > Andrew and Ingo, > > here is a patchthat I'd like to see tested in the mm kernel. The patch > supports robust futexes for Linux without any RT support. > Ulrich Drepper has been asking me for a while for a patch that just has > robustness > in it, no RT or PI or PQ. He'd like to see it in Linux and said he'd > support > it in glibc if/when it gets in. > > This patch was originally done by Todd Kneisel for the robust-mutex SIG > at > OSDL. I've fixed a few bugs and added slab support. > > The patch is at > > http://source.mvista.com/~dsingleton/patch-2.6.15-robust-futex-1 > > There are also some simple tests for robustness in the same directory > in robust-tests.tar.gz. These simple tests test register, deregister, > waiting, > timed waiting, waiting for robustness from a dieing thread to wake, > etc. > Please send the patch to this mailing list with a full description, as per http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt. And by "full" I mean something which tells us what a "robust futex" actually is (it's been a year since I thought about them) and why we would want such a thing. This code looks racy: +static int futex_deadlock(struct rt_mutex *lock) +{ + DEFINE_WAIT(wait); + + _raw_spin_unlock(&lock->wait_lock); + _raw_spin_unlock(¤t->pi_lock); + + prepare_to_wait(&deadlocked_futex, &wait, TASK_INTERRUPTIBLE); + schedule(); + finish_wait(&deadlocked_futex, &wait); + + return -EDEADLK; +} If the spin_unlocks happened after the prepare_to_wait then it would be more idoimatic, but without having analysed the wakeup path, I wonder if a wakeup which occurs after the spin_unlocks and before the prepare_to_wait() will get lost. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Robust futex patch for Linux 2.6.15 2006-01-13 21:27 ` Robust futex patch for Linux 2.6.15 Andrew Morton @ 2006-01-13 22:20 ` Andi Kleen 2006-01-13 23:01 ` Andrew Morton 2006-01-14 16:13 ` Matan Peled 1 sibling, 1 reply; 6+ messages in thread From: Andi Kleen @ 2006-01-13 22:20 UTC (permalink / raw) To: Andrew Morton; +Cc: drepper, robustmutexes, mingo, linux-kernel, daviado Andrew Morton <akpm@osdl.org> writes: > > +static int futex_deadlock(struct rt_mutex *lock) > +{ > + DEFINE_WAIT(wait); > + > + _raw_spin_unlock(&lock->wait_lock); > + _raw_spin_unlock(¤t->pi_lock); And why is there a pi_lock if the code isn't supposed to support PI? -Andi ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Robust futex patch for Linux 2.6.15 2006-01-13 22:20 ` Andi Kleen @ 2006-01-13 23:01 ` Andrew Morton 0 siblings, 0 replies; 6+ messages in thread From: Andrew Morton @ 2006-01-13 23:01 UTC (permalink / raw) To: Andi Kleen; +Cc: drepper, robustmutexes, mingo, linux-kernel, daviado Andi Kleen <ak@suse.de> wrote: > > Andrew Morton <akpm@osdl.org> writes: > > > > +static int futex_deadlock(struct rt_mutex *lock) > > +{ > > + DEFINE_WAIT(wait); > > + > > + _raw_spin_unlock(&lock->wait_lock); > > + _raw_spin_unlock(¤t->pi_lock); > > And why is there a pi_lock if the code isn't supposed to support PI? > That was a copy-n-paste from a -rt patch I happened to find. The URL David sent was bust, and there are various things in the directory there. Maybe we were supposed to look in a tarball, dunno. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Robust futex patch for Linux 2.6.15 2006-01-13 21:27 ` Robust futex patch for Linux 2.6.15 Andrew Morton 2006-01-13 22:20 ` Andi Kleen @ 2006-01-14 16:13 ` Matan Peled 2006-01-14 20:25 ` Andrew Morton 1 sibling, 1 reply; 6+ messages in thread From: Matan Peled @ 2006-01-14 16:13 UTC (permalink / raw) To: Andrew Morton Cc: David Singleton, mingo, linux-kernel, drepper, robustmutexes Andrew Morton wrote: > Please send the patch to this mailing list with a full description, as per > http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt. And by "full" I > mean something which tells us what a "robust futex" actually is (it's been > a year since I thought about them) and why we would want such a thing. > > This code looks racy: > > +static int futex_deadlock(struct rt_mutex *lock) > +{ > + DEFINE_WAIT(wait); > + > + _raw_spin_unlock(&lock->wait_lock); > + _raw_spin_unlock(¤t->pi_lock); > + > + prepare_to_wait(&deadlocked_futex, &wait, TASK_INTERRUPTIBLE); > + schedule(); > + finish_wait(&deadlocked_futex, &wait); > + > + return -EDEADLK; > +} > > If the spin_unlocks happened after the prepare_to_wait then it would be > more idoimatic, but without having analysed the wakeup path, I wonder if a > wakeup which occurs after the spin_unlocks and before the prepare_to_wait() > will get lost. Andrew, I'm looking at this: http://source.mvista.com/~dsingleton/robust-futex-1 And it doesn't seem to have a futex_deadlock function at all. In fact, its seems to have a rather lengthy description about robust futexes and why they're a Good Thing(TM). What are you looking at? -- [Name ] :: [Matan I. Peled ] [Location ] :: [Israel ] [Public Key] :: [0xD6F42CA5 ] [Keyserver ] :: [keyserver.kjsl.com] encrypted/signed plain text preferred ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Robust futex patch for Linux 2.6.15 2006-01-14 16:13 ` Matan Peled @ 2006-01-14 20:25 ` Andrew Morton 2006-01-16 19:09 ` Re [robust-futex-2] : interdiff for memory leak fix david singleton 0 siblings, 1 reply; 6+ messages in thread From: Andrew Morton @ 2006-01-14 20:25 UTC (permalink / raw) To: chaosite; +Cc: daviado, mingo, linux-kernel, drepper, robustmutexes Matan Peled <chaosite@gmail.com> wrote: > > Andrew, I'm looking at this: > > http://source.mvista.com/~dsingleton/robust-futex-1 > > And it doesn't seem to have a futex_deadlock function at all. In fact, its seems > to have a rather lengthy description about robust futexes and why they're a Good > Thing(TM). > > What are you looking at? A file which now appears to have been deleted.. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re [robust-futex-2] : interdiff for memory leak fix 2006-01-14 20:25 ` Andrew Morton @ 2006-01-16 19:09 ` david singleton 0 siblings, 0 replies; 6+ messages in thread From: david singleton @ 2006-01-16 19:09 UTC (permalink / raw) To: Andrew Morton; +Cc: robustmutexes, chaosite, linux-kernel, daviado Here is an interdiff for a memory leak fix in register_futex. The nice thing about the slab caches are the ability to spot leaks easily. diff -u linux-2.6.15/kernel/futex.c linux-2.6.15/kernel/futex.c --- linux-2.6.15/kernel/futex.c +++ linux-2.6.15/kernel/futex.c @@ -1129,6 +1133,8 @@ if (vma->vm_file && vma->vm_file->f_mapping) { if (vma->vm_file->f_mapping->robust_head == NULL) init_robust_list(vma->vm_file->f_mapping, file_futex); + else + kmem_cache_free(file_futex_cachep, file_futex); head = &vma->vm_file->f_mapping->robust_head->robust_list; sem = &vma->vm_file->f_mapping->robust_head->robust_sem; } else { although Safari seems to always translates tabs to spaces. David ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-01-16 19:09 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <b324b5ad0601131316m721f959eu37b741f9e5557a2e@mail.gmail.com> 2006-01-13 21:27 ` Robust futex patch for Linux 2.6.15 Andrew Morton 2006-01-13 22:20 ` Andi Kleen 2006-01-13 23:01 ` Andrew Morton 2006-01-14 16:13 ` Matan Peled 2006-01-14 20:25 ` Andrew Morton 2006-01-16 19:09 ` Re [robust-futex-2] : interdiff for memory leak fix david singleton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).