Commit:     46f382d2b69d2221086b823f0dbc8f32c027cac2
Parent:     d36174bc2bce0372693a9cfbdef8b2689c9982cb
Author:     Oleg Nesterov <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 8 04:19:19 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Feb 8 09:22:28 2008 -0800

    uglify while_each_pid_task() to make sure we don't count the execing 
pricess twice
    There is a window when de_thread() switches the leader and drops
    tasklist_lock.  In that window do_each_pid_task(PIDTYPE_PID) finds both new
    and old leaders.
    The problem is pretty much theoretical and probably can be ignored.  
    the only users of do_each_pid_task(PIDTYPE_PID) are send_sigio/send_sigurg, 
    they can send the signal to the same process twice.
    Signed-off-by: Oleg Nesterov <[EMAIL PROTECTED]>
    Cc: "Eric W. Biederman" <[EMAIL PROTECTED]>
    Cc: Davide Libenzi <[EMAIL PROTECTED]>
    Cc: Pavel Emelyanov <[EMAIL PROTECTED]>
    Cc: Roland McGrath <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 include/linux/pid.h |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/include/linux/pid.h b/include/linux/pid.h
index b91f473..f84d532 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -152,7 +152,13 @@ pid_t pid_vnr(struct pid *pid);
                        hlist_for_each_entry_rcu((task), pos___,        \
                                &pid->tasks[type], pids[type].node) {
+                       /*
+                        * Both old and new leaders may be attached to
+                        * the same pid in the middle of de_thread().
+                        */
 #define while_each_pid_task(pid, type, task)                           \
+                               if (type == PIDTYPE_PID)                \
+                                       break;                          \
                        }                                               \
        } while (0)
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to