From 120599c085b8fe0d9a4790da5273d5b0458a86a9 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Wed, 26 May 2010 14:42:54 -0700 Subject: [PATCH] --- yaml --- r: 198735 b: refs/heads/master c: 065add3941bdca54fe04ed3471a96bce9af88793 h: refs/heads/master i: 198733: 2f95d9ac889e9e384cfc744e90360d70c7748457 198731: 7e668469923222f60caeedf92385026cf931faa0 198727: efd273078749353cc5cc039f82f4aa77bbf9156b 198719: 8cded3bd90373930e5c8595d650797bd3b7a5871 v: v3 --- [refs] | 2 +- trunk/kernel/signal.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a1ac74320e7e..85f21ce90752 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0129ef91ed758c06b6557c36124acfb2e1c7305 +refs/heads/master: 065add3941bdca54fe04ed3471a96bce9af88793 diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index 825a3f24ad76..2ee9573ed11f 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -642,7 +642,7 @@ static inline bool si_fromuser(const struct siginfo *info) static int check_kill_permission(int sig, struct siginfo *info, struct task_struct *t) { - const struct cred *cred = current_cred(), *tcred; + const struct cred *cred, *tcred; struct pid *sid; int error; @@ -656,8 +656,10 @@ static int check_kill_permission(int sig, struct siginfo *info, if (error) return error; + cred = current_cred(); tcred = __task_cred(t); - if ((cred->euid ^ tcred->suid) && + if (!same_thread_group(current, t) && + (cred->euid ^ tcred->suid) && (cred->euid ^ tcred->uid) && (cred->uid ^ tcred->suid) && (cred->uid ^ tcred->uid) &&