Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp13331imm; Tue, 10 Jul 2018 19:49:17 -0700 (PDT) X-Google-Smtp-Source: AAOMgpd5xm9rLojsE+bv/0nOgX9ta026jx2MwGgG/rq7v4K3QHTCeZd19YOWKqm0rTb34kBKaa1T X-Received: by 2002:a65:4344:: with SMTP id k4-v6mr18856007pgq.409.1531277357665; Tue, 10 Jul 2018 19:49:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531277357; cv=none; d=google.com; s=arc-20160816; b=l3jaS9ZR3zfMndjy8iaN7I1H7xsJ/5AgPAfxl8RZqzlFLc4y21T5iHegcGpSAL8NEV TnHQYnDWyKS1JcbIuws7DY/IKVj3lqMTg7pZvkzW1ttKEs0QSCZhj8reOs7u4qV5Ho9W FKV6Y7LyIbEv2XxgdCeg5PSQKyXFrA2SKmnHM3TW8YGBvz5HanaVDhuN4wCmK0KPWSgu evudVyM3AemAR9m/8q6sJslYz/ELe89u/vm00ZIYlUkGDW05SNnWpOb3JAKDO9TkUI9N sw81JL/o3G8Y4XuaiC3Jtx3tBCj1qzUD1NhWSNv06RFacxIoOYPD2Gkq8J/sE0IPNecx eGhA== 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=T7QTmvn6NSrH9g35BKnn6Z6wN2Wy19Kc0JUWkQBOzx8=; b=MRFywVvV/KVW5n0uxEiPHJlNcWtM0O/49eB/iCU7LDbTO9gBVrwVHiSRwc9hnXNO8z C/1M4DJ5dFSvyG3SO2RwGDVTYQkdx6RT+9JtKCa2gixf8h/D40wn3IEeSzTlVDR3fwIQ B7X7F6aqoVm5WrneIpai+B1Yn8SaS8soVFCRer2DzMU5S8mqi1+20OKzuCrQ7mLQDoit kHWlW3fJPLMgJCUHnI28DdOnfc8RB1AVsrGQp6M3x9WVrkaGzMfUMrSh4ki0ncE3fuNO nr5XHBCjp4dEV6U++08U+3LPhL/tIk4alq3QFZ+FCAYyGHQd4Vgnmr8l1A41TtcP8cUC uPSQ== 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 23-v6si17755349pge.589.2018.07.10.19.49.02; Tue, 10 Jul 2018 19:49:17 -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 S1732618AbeGKCst (ORCPT + 99 others); Tue, 10 Jul 2018 22:48:49 -0400 Received: from out01.mta.xmission.com ([166.70.13.231]:40194 "EHLO out01.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732316AbeGKCsf (ORCPT ); Tue, 10 Jul 2018 22:48:35 -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 1fd59F-0001AX-Ap; Tue, 10 Jul 2018 20:46:33 -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 1fd59D-00063R-1t; Tue, 10 Jul 2018 20:46:33 -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: Tue, 10 Jul 2018 21:44:56 -0500 Message-Id: <20180711024459.10654-8-ebiederm@xmission.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <877em2jxyr.fsf_-_@xmission.com> References: <877em2jxyr.fsf_-_@xmission.com> X-XM-SPF: eid=1fd59D-00063R-1t;;;mid=<20180711024459.10654-8-ebiederm@xmission.com>;;;hst=in01.mta.xmission.com;;;ip=97.119.167.31;;;frm=ebiederm@xmission.com;;;spf=neutral X-XM-AID: U2FsdGVkX1/WnnXwhn54/Lx0RIHXRHL92OSpQD4qNmo= X-SA-Exim-Connect-IP: 97.119.167.31 X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on sa01.xmission.com X-Spam-Level: *** X-Spam-Status: No, score=3.5 required=8.0 tests=ALL_TRUSTED,BAYES_50, DCC_CHECK_NEGATIVE,TR_Symld_Words,T_TooManySym_01,XMNoVowels,XMSubLong autolearn=disabled version=3.4.0 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 * 1.5 TR_Symld_Words too many words that have symbols inside * 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% * [score: 0.5000] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa01 1397; Body=1 Fuz1=1 Fuz2=1] * 0.0 T_TooManySym_01 4+ unique symbols in subject X-Spam-DCC: XMission; sa01 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ***;Linus Torvalds X-Spam-Relay-Country: X-Spam-Timing: total 1863 ms - load_scoreonly_sql: 0.06 (0.0%), signal_user_changed: 6 (0.3%), b_tie_ro: 3.5 (0.2%), parse: 1.56 (0.1%), extract_message_metadata: 29 (1.6%), get_uri_detail_list: 5 (0.3%), tests_pri_-1000: 10 (0.5%), tests_pri_-950: 2.0 (0.1%), tests_pri_-900: 7 (0.4%), tests_pri_-400: 46 (2.4%), check_bayes: 43 (2.3%), b_tokenize: 20 (1.1%), b_tok_get_all: 12 (0.6%), b_comp_prob: 4.7 (0.3%), b_tok_touch_all: 3.5 (0.2%), b_finish: 0.85 (0.0%), tests_pri_0: 1749 (93.9%), check_dkim_signature: 0.91 (0.0%), check_dkim_adsp: 10 (0.5%), tests_pri_500: 7 (0.4%), rewrite_mail: 0.00 (0.0%) Subject: [RFC][PATCH 08/11] signal: Use PIDTYPE_TGID to clearly store where file signals will be sent 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 When f_setown is called a pid and a pid type are stored. Replace the use of PIDTYPE_PID with PIDTYPE_TGID as PIDTYPE_TGID goes to the entire thread group. Replace the use of PIDTYPE_MAX with PIDTYPE_PID as PIDTYPE_PID now is only for a thread. Update the users of __f_setown to use PIDTYPE_TGID instead of PIDTYPE_PID, and gather the pid with task_tgid. As the intent of PIDTYPE_PID was a thread group level owner. Signed-off-by: "Eric W. Biederman" --- drivers/net/tun.c | 2 +- drivers/tty/tty_io.c | 4 ++-- fs/fcntl.c | 20 ++++++++------------ fs/locks.c | 2 +- fs/notify/dnotify/dnotify.c | 3 ++- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index a192a017cc68..4219735a5418 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -3216,7 +3216,7 @@ static int tun_chr_fasync(int fd, struct file *file, int on) goto out; if (on) { - __f_setown(file, task_pid(current), PIDTYPE_PID, 0); + __f_setown(file, task_tgid(current), PIDTYPE_TGID, 0); tfile->flags |= TUN_FASYNC; } else tfile->flags &= ~TUN_FASYNC; diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index aba59521ad48..cec58c53b0c4 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -2121,8 +2121,8 @@ static int __tty_fasync(int fd, struct file *filp, int on) pid = tty->pgrp; type = PIDTYPE_PGID; } else { - pid = task_pid(current); - type = PIDTYPE_PID; + pid = task_tgid(current); + type = PIDTYPE_TGID; } get_pid(pid); spin_unlock_irqrestore(&tty->ctrl_lock, flags); diff --git a/fs/fcntl.c b/fs/fcntl.c index 12273b6ea56d..cf10909cfa0a 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c @@ -116,7 +116,7 @@ int f_setown(struct file *filp, unsigned long arg, int force) struct pid *pid = NULL; int who = arg, ret = 0; - type = PIDTYPE_PID; + type = PIDTYPE_TGID; if (who < 0) { /* avoid overflow below */ if (who == INT_MIN) @@ -143,7 +143,7 @@ EXPORT_SYMBOL(f_setown); void f_delown(struct file *filp) { - f_modown(filp, NULL, PIDTYPE_PID, 1); + f_modown(filp, NULL, PIDTYPE_TGID, 1); } pid_t f_getown(struct file *filp) @@ -171,11 +171,11 @@ static int f_setown_ex(struct file *filp, unsigned long arg) switch (owner.type) { case F_OWNER_TID: - type = PIDTYPE_MAX; + type = PIDTYPE_PID; break; case F_OWNER_PID: - type = PIDTYPE_PID; + type = PIDTYPE_TGID; break; case F_OWNER_PGRP: @@ -206,11 +206,11 @@ static int f_getown_ex(struct file *filp, unsigned long arg) read_lock(&filp->f_owner.lock); owner.pid = pid_vnr(filp->f_owner.pid); switch (filp->f_owner.pid_type) { - case PIDTYPE_MAX: + case PIDTYPE_PID: owner.type = F_OWNER_TID; break; - case PIDTYPE_PID: + case PIDTYPE_TGID: owner.type = F_OWNER_PID; break; @@ -785,10 +785,8 @@ void send_sigio(struct fown_struct *fown, int fd, int band) read_lock(&fown->lock); type = fown->pid_type; - if (type == PIDTYPE_MAX) { + if (type == PIDTYPE_PID) group = 0; - type = PIDTYPE_PID; - } pid = fown->pid; if (!pid) @@ -821,10 +819,8 @@ int send_sigurg(struct fown_struct *fown) read_lock(&fown->lock); type = fown->pid_type; - if (type == PIDTYPE_MAX) { + if (type == PIDTYPE_PID) group = 0; - type = PIDTYPE_PID; - } pid = fown->pid; if (!pid) diff --git a/fs/locks.c b/fs/locks.c index db7b6917d9c5..dd5f012887ca 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -546,7 +546,7 @@ lease_setup(struct file_lock *fl, void **priv) if (!fasync_insert_entry(fa->fa_fd, filp, &fl->fl_fasync, fa)) *priv = NULL; - __f_setown(filp, task_pid(current), PIDTYPE_PID, 0); + __f_setown(filp, task_tgid(current), PIDTYPE_TGID, 0); } static const struct lock_manager_operations lease_manager_ops = { diff --git a/fs/notify/dnotify/dnotify.c b/fs/notify/dnotify/dnotify.c index e2bea2ac5dfb..47b650b81b07 100644 --- a/fs/notify/dnotify/dnotify.c +++ b/fs/notify/dnotify/dnotify.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -353,7 +354,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg) goto out; } - __f_setown(filp, task_pid(current), PIDTYPE_PID, 0); + __f_setown(filp, task_tgid(current), PIDTYPE_TGID, 0); error = attach_dn(dn, dn_mark, id, fd, filp, mask); /* !error means that we attached the dn to the dn_mark, so don't free it */ -- 2.17.1