Messages in this thread | | | Date | Tue, 18 Jan 2022 12:51:27 -0600 | Subject | Re: [PATCH V6 01/10] Use copy_process in vhost layer | From | Mike Christie <> |
| |
On 1/17/22 11:31 AM, Eric W. Biederman wrote: > Mike Christie <michael.christie@oracle.com> writes: > >> On 12/22/21 12:24 PM, Eric W. Biederman wrote: >>> All I am certain of is that you need to set >>> "args->exit_signal = -1;". This prevents having to play games with >>> do_notify_parent. >> >> Hi Eric, >> >> I have all your review comments handled except this one. It's looking like it's >> more difficult than just setting the exit_signal=-1, so I wanted to check that >> I understood you. > > [snip problems with exit_signal = -1] > >> >> What do you think? > > I was wrong. I appear to have confused the thread and the non-thread > cases. > > Perhaps I meant "args->exit_signal = 0". That looks like > do_notify_parent won't send it, and thread_group_leader continues to do > the right thing.
That doesn't work too. exit_notify will call do_notify_parent but our parent, qemu, does not ignore SIGCHILD so we will not drop down in into this chunk:
psig = tsk->parent->sighand; spin_lock_irqsave(&psig->siglock, flags); if (!tsk->ptrace && sig == SIGCHLD && (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN || (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) {
do_notify_parent will return false and so autoreap in exit_notify will be false.
> > Baring any additional confusion on my part that cleanly solves the > problem of how not to send a signal from a child process cleanly. > > My apologies for sending you on a wild goose chase. >
It's no problem. I learned a lot about signal handling :)
| |