From f2feb011a5be03db178d3de0bf82aa9af086adde Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Tue, 14 Jul 2009 11:29:01 -0500 Subject: [PATCH] Ignore SIGSYS when issuing pioctl syscall Ignore SIGSYS when we issue the pioctl syscall, so we don't dump core when the kernel module hasn't yet been installed on several platforms. Also, restore the old SIGSYS signal handler afterwards, so we don't cause any side-effects. Reviewed-on: http://gerrit.openafs.org/81 Verified-by: Andrew Deason Verified-by: Derrick Brashear Reviewed-by: Russ Allbery (cherry picked from commit 4f36dd089a9c7187f94f77516a486245c057f7f4) Reviewed-on: http://gerrit.openafs.org/274 Tested-by: Andrew Deason --- src/sys/afssyscalls.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sys/afssyscalls.c b/src/sys/afssyscalls.c index 24c38f0b9..68f0f3cfc 100644 --- a/src/sys/afssyscalls.c +++ b/src/sys/afssyscalls.c @@ -350,7 +350,13 @@ lpioctl(char *path, int cmd, char *cmarg, int follow) if (rval) errcode = rval; #else + /* As kauth/user.c says, handle smoothly the case where no AFS system call + * exists (yet). */ + void (*old)() = signal(SIGSYS, SIG_IGN); + errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg, follow); + + signal(SIGSYS, old); #endif return (errcode); -- 2.39.5