lkml.org 
[lkml]   [2011]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 3/8] vfork: make it killable
    From
    Date
    On Wed, 2011-07-27 at 18:32 +0200, Oleg Nesterov wrote:

    [...]

    > static long clone_vfork_finish(struct task_struct *child,
    > struct completion *vfork_done, long pid)
    > {
    > - freezer_do_not_count();
    > - wait_for_completion(vfork_done);
    > - freezer_count();
    > + int killed = wait_for_completion_killable(vfork_done);
    > +
    > + if (killed) {
    > + struct completion *steal = xchg(&child->vfork_done, NULL);
    > + /* if we race with complete_vfork_done() we have to wait */
    > + if (unlikely(!steal))
    > + wait_for_completion(vfork_done);
    > +
    > + return -EINTR;
    > + }

    Hmm.. isn't this inherently racy anyway? Why go to the trouble of trying
    to handle this race at all?



    \
     
     \ /
      Last update: 2011-07-29 15:05    [W:0.021 / U:0.724 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site