do_wait() wakeup optimization: child_wait_callback: check __WNOTHREAD case
[linux-2.6-block.git] / kernel / exit.c
index 7838b4d687743cb2e927e13d9cefe482e1b662d0..270a68b7f22fd8259512f97be2696d451fc8a744 100644 (file)
@@ -1581,6 +1581,9 @@ static int child_wait_callback(wait_queue_t *wait, unsigned mode,
        if (!eligible_child(wo, p))
                return 0;
 
+       if ((wo->wo_flags & __WNOTHREAD) && wait->private != p->parent)
+               return 0;
+
        return default_wake_function(wait, mode, sync, key);
 }