mirror of
https://git.openafs.org/openafs.git
synced 2025-01-20 16:00:12 +00:00
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 <adeason@sinenomine.net> Verified-by: Derrick Brashear <shadow@dementia.org> Reviewed-by: Russ Allbery <rra@stanford.edu>
This commit is contained in:
parent
00e32618c0
commit
4f36dd089a
@ -16,6 +16,7 @@
|
||||
|
||||
#include <afsconfig.h>
|
||||
#include <afs/param.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <afs/afs_args.h>
|
||||
#if defined(AFS_SUN_ENV) && !defined(AFS_SUN5_ENV)
|
||||
@ -48,10 +49,10 @@ int
|
||||
lpioctl(char *path, int cmd, char *cmarg, int follow)
|
||||
{
|
||||
int errcode, rval;
|
||||
#if defined(AFS_FBSD_ENV)
|
||||
#ifndef AFS_LINUX20_ENV
|
||||
/* As kauth/user.c says, handle smoothly the case where no AFS system call
|
||||
* exists (yet). Why don't more platforms have trouble here? Matt */
|
||||
sig_t old = (int (*)())signal(SIGSYS, SIG_IGN);
|
||||
* exists (yet). */
|
||||
sig_t old = signal(SIGSYS, SIG_IGN);
|
||||
#endif
|
||||
|
||||
#if defined(AFS_LINUX20_ENV)
|
||||
@ -70,6 +71,10 @@ lpioctl(char *path, int cmd, char *cmarg, int follow)
|
||||
errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg, follow);
|
||||
#endif
|
||||
|
||||
#ifndef AFS_LINUX20_ENV
|
||||
signal(SIGSYS, old);
|
||||
#endif
|
||||
|
||||
return (errcode);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user