[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20230823171455.GA12188@redhat.com>
Date: Wed, 23 Aug 2023 19:14:55 +0200
From: Oleg Nesterov <oleg@...hat.com>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: "Eric W. Biederman" <ebiederm@...ssion.com>,
David Laight <David.Laight@...LAB.COM>,
linux-kernel@...r.kernel.org
Subject: [PATCH RESEND] __kill_pgrp_info: simplify the calculation of return
value
No need to calculate/check the "success" variable, we can kill it and update
retval in the main loop unless it is zero.
Suggested-by: David Laight <David.Laight@...LAB.COM>
Signed-off-by: Oleg Nesterov <oleg@...hat.com>
---
kernel/signal.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/kernel/signal.c b/kernel/signal.c
index 128e9bb3d1a2..c0acdfd4c81b 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1460,16 +1460,21 @@ int group_send_sig_info(int sig, struct kernel_siginfo *info,
int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp)
{
struct task_struct *p = NULL;
- int retval, success;
+ int ret = -ESRCH;
- success = 0;
- retval = -ESRCH;
do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
int err = group_send_sig_info(sig, info, p, PIDTYPE_PGID);
- success |= !err;
- retval = err;
+ /*
+ * If group_send_sig_info() succeeds at least once ret
+ * becomes 0 and after that the code below has no effect.
+ * Otherwise we return the last err or -ESRCH if this
+ * process group is empty.
+ */
+ if (ret)
+ ret = err;
} while_each_pid_task(pgrp, PIDTYPE_PGID, p);
- return success ? 0 : retval;
+
+ return ret;
}
int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid)
--
2.25.1.362.g51ebf55
Powered by blists - more mailing lists