Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp6505288imm; Mon, 23 Jul 2018 20:27:14 -0700 (PDT) X-Google-Smtp-Source: AAOMgpduB/UZjxgDCb4p66X6X1QfUSRvDLcs5r3v2NafAqvE20JyqroLpzjhvaW23ml1OgC/q0hk X-Received: by 2002:a65:5803:: with SMTP id g3-v6mr14838499pgr.117.1532402834631; Mon, 23 Jul 2018 20:27:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532402834; cv=none; d=google.com; s=arc-20160816; b=Th/OKbFm0+0P8iqlpWMRhqTNFSuylTGnXBeYTpL/e6BrXVCHaD6sYpG0uOZBlj36Vx psGDBjCeSzyHfWOtERHO/P6q4mqfVwBP0E5rWhFKgsnxHufZ4tOqHfBBYJYCANODDxxy g/D0PVeJVXNOH0vMQlANGj83VNmOIuHGU8SLbdofGI5JZYQNqfU66u8mZd3SoxTV/x+K +AJNpva07w4lJCBvxwcRgwbPypUjB9XwxkeC2Q2Bjvk4lullCDE/v6BZXr6o/XHCovXq +U3vRHD2DY2xFWCh078Eh7FTptS4QCaKAoga/njJH7dr/GXoHLzXaqBZXyQUpBWNh52O Vjsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:references:in-reply-to:message-id :date:cc:to:from:arc-authentication-results; bh=eTlwYfR7ffgIBz7C7ZJmq+C3mLBNpLCmPZJg6ly8Bzw=; b=bgDdQOlaXiATbuY6hlQgNnzWJodcOQTxiNEp3fcT8XCccKprWCmAp9AJ7L/xF75ltn j7OLfLjMDp+WOAHczF9uFOcE/1pXq5ULCkx+KjGKoKLRMUR7lxoy78sUilpkDtxXWsdZ QG5RTaxMs0ucfj4eJT/IbYrArjMspkY+DfG4H2Mn9crs2ZFdB8N2W/vTB/DQi2tSgM3g n1YaokDTsIYm3NicdNnYcTgk6vJ2TxXcXz0R6RvfBnyEjdSooAtA3oCCszQ/6QC4Tbmz 4uvNWZSy17wmodYLxpPs2Bw9KFZlHR0KN9CHfbWxS0Ng64S3/DTpaOCObUx6/gL5xq2l O0ew== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h86-v6si10173677pfj.120.2018.07.23.20.27.00; Mon, 23 Jul 2018 20:27:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388439AbeGXEaJ (ORCPT + 99 others); Tue, 24 Jul 2018 00:30:09 -0400 Received: from out01.mta.xmission.com ([166.70.13.231]:58741 "EHLO out01.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388244AbeGXEaI (ORCPT ); Tue, 24 Jul 2018 00:30:08 -0400 Received: from in01.mta.xmission.com ([166.70.13.51]) by out01.mta.xmission.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.87) (envelope-from ) id 1fhnxN-0005d2-L5; Mon, 23 Jul 2018 21:25:49 -0600 Received: from [97.119.167.31] (helo=x220.int.ebiederm.org) by in01.mta.xmission.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.87) (envelope-from ) id 1fhnxM-0008AK-Ts; Mon, 23 Jul 2018 21:25:49 -0600 From: "Eric W. Biederman" To: Linus Torvalds Cc: Oleg Nesterov , Andrew Morton , linux-kernel@vger.kernel.org, Wen Yang , majiang , "Eric W. Biederman" Date: Mon, 23 Jul 2018 22:24:09 -0500 Message-Id: <20180724032419.20231-10-ebiederm@xmission.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <87efft5ncd.fsf_-_@xmission.com> References: <87efft5ncd.fsf_-_@xmission.com> X-XM-SPF: eid=1fhnxM-0008AK-Ts;;;mid=<20180724032419.20231-10-ebiederm@xmission.com>;;;hst=in01.mta.xmission.com;;;ip=97.119.167.31;;;frm=ebiederm@xmission.com;;;spf=neutral X-XM-AID: U2FsdGVkX18/BkZuZ7JcPwh53E3mbSLp+MWAxOGe32w= X-SA-Exim-Connect-IP: 97.119.167.31 X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa05.xmission.com X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=8.0 tests=ALL_TRUSTED,BAYES_50, DCC_CHECK_NEGATIVE,T_TooManySym_01,XMGappySubj_01,XMNoVowels,XMSubLong autolearn=disabled version=3.4.1 X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 0.7 XMSubLong Long Subject * 1.5 XMNoVowels Alpha-numberic number with no vowels * 0.5 XMGappySubj_01 Very gappy subject * 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% * [score: 0.4999] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa05 1397; Body=1 Fuz1=1 Fuz2=1] * 0.0 T_TooManySym_01 4+ unique symbols in subject X-Spam-DCC: XMission; sa05 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: **;Linus Torvalds X-Spam-Relay-Country: X-Spam-Timing: total 278 ms - load_scoreonly_sql: 0.03 (0.0%), signal_user_changed: 3.8 (1.4%), b_tie_ro: 2.5 (0.9%), parse: 1.29 (0.5%), extract_message_metadata: 17 (6.2%), get_uri_detail_list: 3.1 (1.1%), tests_pri_-1000: 9 (3.1%), tests_pri_-950: 1.64 (0.6%), tests_pri_-900: 1.35 (0.5%), tests_pri_-400: 26 (9.3%), check_bayes: 24 (8.8%), b_tokenize: 11 (3.9%), b_tok_get_all: 6 (2.2%), b_comp_prob: 2.3 (0.8%), b_tok_touch_all: 3.1 (1.1%), b_finish: 0.70 (0.3%), tests_pri_0: 206 (74.1%), check_dkim_signature: 0.57 (0.2%), check_dkim_adsp: 4.1 (1.5%), tests_pri_500: 8 (2.8%), rewrite_mail: 0.00 (0.0%) Subject: [PATCH 10/20] signal: Pass pid type into group_send_sig_info X-Spam-Flag: No X-SA-Exim-Version: 4.2.1 (built Thu, 05 May 2016 13:38:54 -0600) X-SA-Exim-Scanned: Yes (on in01.mta.xmission.com) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This passes the information we already have at the call sight into group_send_sig_info. Ultimatelly allowing for to better handle signals sent to a group of processes. Signed-off-by: "Eric W. Biederman" --- include/linux/signal.h | 4 +++- kernel/exit.c | 3 ++- kernel/signal.c | 10 ++++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/linux/signal.h b/include/linux/signal.h index 3c5200137b24..d8f2bf3d41e6 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -254,11 +254,13 @@ static inline int valid_signal(unsigned long sig) struct timespec; struct pt_regs; +enum pid_type; extern int next_signal(struct sigpending *pending, sigset_t *mask); extern int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, bool group); -extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); +extern int group_send_sig_info(int sig, struct siginfo *info, + struct task_struct *p, enum pid_type type); extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); extern int sigprocmask(int, sigset_t *, sigset_t *); extern void set_current_blocked(sigset_t *); diff --git a/kernel/exit.c b/kernel/exit.c index 25582b442955..0e21e6d21f35 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -681,7 +681,8 @@ static void forget_original_parent(struct task_struct *father, t->parent = t->real_parent; if (t->pdeath_signal) group_send_sig_info(t->pdeath_signal, - SEND_SIG_NOINFO, t); + SEND_SIG_NOINFO, t, + PIDTYPE_TGID); } /* * If this is a threaded reparent there is no need to diff --git a/kernel/signal.c b/kernel/signal.c index 40feb14e276d..c7527338fe9d 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1274,7 +1274,8 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, /* * send signal info to all the members of a group */ -int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) +int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, + enum pid_type type) { int ret; @@ -1301,7 +1302,7 @@ int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp) success = 0; retval = -ESRCH; do_each_pid_task(pgrp, PIDTYPE_PGID, p) { - int err = group_send_sig_info(sig, info, p); + int err = group_send_sig_info(sig, info, p, PIDTYPE_PGID); success |= !err; retval = err; } while_each_pid_task(pgrp, PIDTYPE_PGID, p); @@ -1317,7 +1318,7 @@ int kill_pid_info(int sig, struct siginfo *info, struct pid *pid) rcu_read_lock(); p = pid_task(pid, PIDTYPE_PID); if (p) - error = group_send_sig_info(sig, info, p); + error = group_send_sig_info(sig, info, p, PIDTYPE_TGID); rcu_read_unlock(); if (likely(!p || error != -ESRCH)) return error; @@ -1420,7 +1421,8 @@ static int kill_something_info(int sig, struct siginfo *info, pid_t pid) for_each_process(p) { if (task_pid_vnr(p) > 1 && !same_thread_group(p, current)) { - int err = group_send_sig_info(sig, info, p); + int err = group_send_sig_info(sig, info, p, + PIDTYPE_MAX); ++count; if (err != -EPERM) retval = err; -- 2.17.1