On Tue, Sep 19, 2023 at 12:05:42AM +0300, Konstantin Belousov wrote:
> On Mon, Sep 18, 2023 at 02:53:25PM +0000, Dmitry Chagin wrote:
> > The branch main has been updated by dchagin:
> > 
> > URL: 
> > https://cgit.FreeBSD.org/src/commit/?id=227d01c1bc7caf2e838ee6eef1e6a3cc81d79d1b
> > 
> > commit 227d01c1bc7caf2e838ee6eef1e6a3cc81d79d1b
> > Author:     Dmitry Chagin <dcha...@freebsd.org>
> > AuthorDate: 2023-09-18 14:53:01 +0000
> > Commit:     Dmitry Chagin <dcha...@freebsd.org>
> > CommitDate: 2023-09-18 14:53:01 +0000
> > 
> >     linux(4): On Linux SIGKILL can not be reset to default
> >     
> >     MFC after:              1 week
> > ---
> >  sys/compat/linux/linux_signal.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/sys/compat/linux/linux_signal.c 
> > b/sys/compat/linux/linux_signal.c
> > index e3e3fc74a6a9..9a84700b3949 100644
> > --- a/sys/compat/linux/linux_signal.c
> > +++ b/sys/compat/linux/linux_signal.c
> > @@ -170,6 +170,7 @@ linux_do_sigaction(struct thread *td, int linux_sig, 
> > l_sigaction_t *linux_nsa,
> >  
> >     if (!LINUX_SIG_VALID(linux_sig))
> >             return (EINVAL);
> > +   sig = linux_to_bsd_signal(linux_sig);
> >  
> >     osa = (linux_osa != NULL) ? &oact : NULL;
> >     if (linux_nsa != NULL) {
> > @@ -180,9 +181,11 @@ linux_do_sigaction(struct thread *td, int linux_sig, 
> > l_sigaction_t *linux_nsa,
> >                     linux_ktrsigset(&linux_nsa->lsa_mask,
> >                         sizeof(linux_nsa->lsa_mask));
> >  #endif
> > +           if ((sig == SIGKILL || sig == SIGSTOP) &&
> > +               nsa->sa_handler == SIG_DFL)
> > +                   return (EINVAL);
> This is excessive: look at kern_sigaction() around line 822.
> 

Well, I checkd that before, Bruce added this check a long time ago,
however, Bruce's change allows the handler to be set to SIG_DFL.
And I haven't found an explicit statement of how it should be in POSIX,
so I think it's Linux specific



> >     } else
> >             nsa = NULL;
> > -   sig = linux_to_bsd_signal(linux_sig);
> >  
> >     error = kern_sigaction(td, sig, nsa, osa, 0);
> >     if (error != 0)

Reply via email to