Messages in this thread | | | Date | Thu, 18 May 2023 11:42:12 -0500 | Subject | Re: [RFC PATCH 1/8] signal: Dequeue SIGKILL even if SIGNAL_GROUP_EXIT/group_exec_task is set | From | Mike Christie <> |
| |
On 5/18/23 11:25 AM, Oleg Nesterov wrote: > I too do not understand the 1st change in this patch ... > > On 05/18, Mike Christie wrote: >> >> In the other patches we do: >> >> if (get_signal(ksig)) >> start_exit_cleanup_by_stopping_newIO() >> flush running IO() >> exit() >> >> But to do the flush running IO() part of this I need to wait for it so >> that's why I wanted to be able to dequeue the SIGKILL and clear the >> TIF_SIGPENDING bit. > > But get_signal() will do what you need, dequeue SIGKILL and clear SIGPENDING ? > > if ((signal->flags & SIGNAL_GROUP_EXIT) || > signal->group_exec_task) { > clear_siginfo(&ksig->info); > ksig->info.si_signo = signr = SIGKILL; > sigdelset(¤t->pending.signal, SIGKILL); > > this "dequeues" SIGKILL, > > trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO, > &sighand->action[SIGKILL - 1]); > recalc_sigpending(); > > this clears TIF_SIGPENDING. >
I see what you guys meant. TIF_SIGPENDING isn't getting cleared. I'll dig into why.
| |