Re: [PATCH] signal: Fix the error return of kill -1
From: Eric W. Biederman
Date: Wed Aug 16 2023 - 16:33:49 EST
Oleg Nesterov <oleg@xxxxxxxxxx> writes:
> On 08/15, David Laight wrote:
>>
>> or maybe even:
>> } else {
>> struct task_struct * p;
>> int err;
>> ret = -ESRCH;
>>
>> for_each_process(p) {
>> if (task_pid_vnr(p) > 1 &&
>> !same_thread_group(p, current)) {
>> err = group_send_sig_info(sig, info, p,
>> PIDTYPE_MAX);
>> if (ret)
>> ret = err;
>
> Hmm, indeed ;)
>
> and "err" can be declared inside the loop.
We can't remove the success case, from my posted patch.
A signal is considered as successfully delivered if at least
one process receives it.
That is something the current code for kill -1 actually gets
wrong (but hides because it ignores -EPERM).
Otherwise yes I expect we can simplify the use of variables as
suggested.
Eric