Messages in this thread | | | Subject | Re: futex question | From | Peter Zijlstra <> | Date | Mon, 05 Oct 2009 12:36:14 +0200 |
| |
On Sun, 2009-10-04 at 18:59 +0200, Thomas Gleixner wrote:
> > do. It does not feel right. Currently, with or without my change, > > such a thing would indefinitely block other waiters on the same > > futex. > > Right. Which completely defeats the purpose of the robust list. Will > have a look tomorrow.
Right, so mm_release() which is meant to destroy the old mm context actually does exit_robust_list(), but the problem is that it does so on the new mm, not the old one that got passed down to mm_release().
The other detail is that exit_robust_list() doesn't clear current->robust_list.
The problem with the patch send my Ani is that it clears the robust lists before the point of no return, so on a failing execve() we'd have messed up the state.
Making exit_robust_list() deal with an mm that is not the current mm is interesting indeed.
| |