lkml.org 
[lkml]   [2009]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: futex question
    Peter,

    On Mon, 5 Oct 2009, Peter Zijlstra wrote:

    > 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.

    I know.

    > 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.

    Right. We need to do that at the latest possible point.

    Looking more into that I think we should check whether the robust list
    has an entry (lock held) in do_execve() and return -EWOULDBLOCK to
    luser space. Same if pi_waiters is not empty. Holding a lock and
    calling execve() is simply broken.

    Thanks,

    tglx


    \
     
     \ /
      Last update: 2009-10-05 13:03    [W:2.271 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site