Module Name: src Committed By: christos Date: Fri Feb 14 16:35:11 UTC 2014
Modified Files: src/sys/kern: sys_sig.c Log Message: Don't check trampolines for SIG_DFL or SIG_IGN since they are not used. >From gimpy. To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/kern/sys_sig.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/sys_sig.c diff -u src/sys/kern/sys_sig.c:1.41 src/sys/kern/sys_sig.c:1.42 --- src/sys/kern/sys_sig.c:1.41 Fri Mar 8 04:32:59 2013 +++ src/sys/kern/sys_sig.c Fri Feb 14 11:35:11 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_sig.c,v 1.41 2013/03/08 09:32:59 apb Exp $ */ +/* $NetBSD: sys_sig.c,v 1.42 2014/02/14 16:35:11 christos Exp $ */ /*- * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_sig.c,v 1.41 2013/03/08 09:32:59 apb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_sig.c,v 1.42 2014/02/14 16:35:11 christos Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -389,16 +389,18 @@ sigaction1(struct lwp *l, int signum, co * Trampoline ABI version 0 is reserved for the legacy kernel * provided on-stack trampoline. Conversely, if we are using a * non-0 ABI version, we must have a trampoline. Only validate the - * vers if a new sigaction was supplied. Emulations use legacy - * kernel trampolines with version 0, alternatively check for that - * too. + * vers if a new sigaction was supplied and there was an actual + * handler specified (not SIG_IGN or SIG_DFL), which don't require + * a trampoline. Emulations use legacy kernel trampolines with + * version 0, alternatively check for that too. * * If version < 2, we try to autoload the compat module. Note * that we interlock with the unload check in compat_modcmd() * using kernconfig_lock. If the autoload fails, we don't try it * again for this process. */ - if (nsa != NULL) { + if (nsa != NULL && nsa->sa_handler != SIG_IGN + && nsa->sa_handler != SIG_DFL) { if (__predict_false(vers < 2)) { if (p->p_flag & PK_32) v0v1valid = true;