version 1.51, 2020/05/23 23:42:43 |
version 1.52, 2021/09/23 06:58:47 |
Line 410 sigaction1(struct lwp *l, int signum, co |
|
Line 410 sigaction1(struct lwp *l, int signum, co |
|
if (nsa != NULL && nsa->sa_handler != SIG_IGN |
if (nsa != NULL && nsa->sa_handler != SIG_IGN |
&& nsa->sa_handler != SIG_DFL) { |
&& nsa->sa_handler != SIG_DFL) { |
if (__predict_false(vers < 2)) { |
if (__predict_false(vers < 2)) { |
if (p->p_flag & PK_32) |
if (p->p_flag & PK_32) { |
v0v1valid = true; |
v0v1valid = true; |
else if ((p->p_lflag & PL_SIGCOMPAT) == 0) { |
} else if (vers == 0 && |
|
p->p_sigctx.ps_sigcode != NULL) { |
|
/* |
|
* if sigcode is used for this emulation, |
|
* version 0 is allowed. |
|
*/ |
|
} else if ((p->p_lflag & PL_SIGCOMPAT) == 0) { |
kernconfig_lock(); |
kernconfig_lock(); |
(void)module_autoload("compat_16", |
(void)module_autoload("compat_16", |
MODULE_CLASS_ANY); |
MODULE_CLASS_ANY); |
Line 439 sigaction1(struct lwp *l, int signum, co |
|
Line 445 sigaction1(struct lwp *l, int signum, co |
|
switch (vers) { |
switch (vers) { |
case 0: |
case 0: |
/* sigcontext, kernel supplied trampoline. */ |
/* sigcontext, kernel supplied trampoline. */ |
if (tramp != NULL || !v0v1valid) { |
if (tramp != NULL || |
|
(p->p_sigctx.ps_sigcode == NULL && !v0v1valid)) { |
return EINVAL; |
return EINVAL; |
} |
} |
break; |
break; |