Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

compat_linux sigaction broken on monolithic kernel



Hi,

recent sigaction1 changes break at least compat_linux when using
kernel with no options MODULAR: all rt_sigaction syscalls fail
with EINVAL.

compat_linux calls sigaction1 with vers == 0, and when kernel
has no options MODULAR sigaction1() then fails at:

                switch (vers) {
                case 0:
                        /* sigcontext, kernel supplied trampoline. */
                        if (tramp != NULL || !v0v1valid) {
                                return EINVAL;
                        }
                        break;

I tried the patch below, and it made compat_linux32 work again,
but I'm not sure if it is correct otherwise.

Index: sys_sig.c
===================================================================
RCS file: /cvsroot/src/sys/kern/sys_sig.c,v
retrieving revision 1.20
diff -r1.20 sys_sig.c
383c383,384
<                            return EINVAL;
---
>                            if (p->p_emul->e_sendsig == sendsig)
>                                    return EINVAL;



Home | Main Index | Thread Index | Old Index