From c091cb7b143ee9571eccf25a77f8ab4e416502ba Mon Sep 17 00:00:00 2001 From: David Howells Date: Wed, 4 Aug 2010 16:59:14 +0100 Subject: [PATCH] --- yaml --- r: 202555 b: refs/heads/master c: 694f690d27dadccc8cb9d90532e76593b61fe098 h: refs/heads/master i: 202553: 9643150404461287e583b570ef7bd994776a1dfe 202551: 7c80a98c07f48e436e58f4cd4c3c4d1d67f1e081 v: v3 --- [refs] | 2 +- trunk/kernel/signal.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 4dd550aed53c..f70fad03c673 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e75aa85892b2ee78c79edac720868cbef16e62eb +refs/heads/master: 694f690d27dadccc8cb9d90532e76593b61fe098 diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index 906ae5a1779c..bded65187780 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -637,7 +637,7 @@ static inline bool si_fromuser(const struct siginfo *info) /* * Bad permissions for sending the signal - * - the caller must hold at least the RCU read lock + * - the caller must hold the RCU read lock */ static int check_kill_permission(int sig, struct siginfo *info, struct task_struct *t) @@ -1127,11 +1127,14 @@ struct sighand_struct *lock_task_sighand(struct task_struct *tsk, unsigned long /* * send signal info to all the members of a group - * - the caller must hold the RCU read lock at least */ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) { - int ret = check_kill_permission(sig, info, p); + int ret; + + rcu_read_lock(); + ret = check_kill_permission(sig, info, p); + rcu_read_unlock(); if (!ret && sig) ret = do_send_sig_info(sig, info, p, true);