diff --git a/[refs] b/[refs] index ba15d7048048..6d49f4b30c83 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 14d8c9f3c09e7fd7b9af80904289fe204f5b93c6 +refs/heads/master: 7cf7db8df0b78076eafa4ead47559344ca7b7a43 diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index 73316568a69c..f67545f9394c 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -218,13 +218,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi struct user_struct *user; /* - * We won't get problems with the target's UID changing under us - * because changing it requires RCU be used, and if t != current, the - * caller must be holding the RCU readlock (by way of a spinlock) and - * we use RCU protection here + * Protect access to @t credentials. This can go away when all + * callers hold rcu read lock. */ + rcu_read_lock(); user = get_uid(__task_cred(t)->user); atomic_inc(&user->sigpending); + rcu_read_unlock(); if (override_rlimit || atomic_read(&user->sigpending) <=