[lkml]   [2010]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] wait_for_helper: SIGCHLD from user-space can lead to use-after-free
    On 03/10, Roland McGrath wrote:
    > SIGCHLD being blocked doesn't affect reaping, so SIG_IGN or sa_flags &
    > SA_NOCLDWAIT is the only thing that would do this. How does that come
    > about here in this kthread? Is it inherited from the instigating user
    > process? If so, then SA_NOCLDWAIT is as much a problem as SIG_IGN.
    > Or I guess maybe it's from ignore_signals() in kthreadd()?
    > In that case SIG_IGN is indeed all that matters. (I don't really
    > know all the kthread/kmod/userhelper code organization.)

    Yes. kthreads run with all signal ignored, this is inherited from
    kthreadd() which does ignore_signal().

    > Perhaps it would be cleaner to do:
    > flush_signal_handlers(current, 1);
    > in wait_for_helper

    I don't think this can work. SIG_DFL for SIGCHLD is OK because it is
    sig_kernel_ignore(). But, say, SIGHUP and other signals still should
    be ignored, otherwise we have the same problems with the unwanted
    signal_pending() this patch tries to avoid.

    But even if we could do this,

    > That should make it redundant in ____call_usermodehelper,
    > so it could be removed from there.

    Please note that __call_usermodehelper() forks ____call_usermodehelper() too.


     \ /
      Last update: 2010-03-10 22:23    [W:0.022 / U:1.028 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site