From f9ec9d4a762c9732b8086333aad07c1c307b57e1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 21 Aug 2009 11:00:33 -0700 Subject: [PATCH] mount.ceph: block same signals as /sbin/mount --- src/mount/mount.ceph.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/mount/mount.ceph.c b/src/mount/mount.ceph.c index 491970f1cae..3a811c044a9 100644 --- a/src/mount/mount.ceph.c +++ b/src/mount/mount.ceph.c @@ -11,6 +11,17 @@ int verboseflag = 0; #include "mtab.c" +void +block_signals (int how) { + sigset_t sigs; + + sigfillset (&sigs); + sigdelset(&sigs, SIGTRAP); + sigdelset(&sigs, SIGSEGV); + sigprocmask (how, &sigs, (sigset_t *) 0); +} + + static int safe_cat(char **pstr, int *plen, int pos, const char *str2) { int len2 = strlen(str2); @@ -259,6 +270,8 @@ int main(int argc, char *argv[]) parse_options(&new_argv[options_pos], &flags); + block_signals(SIG_BLOCK); + if (mount(new_argv[1], new_argv[2], "ceph", flags, new_argv[options_pos])) { switch (errno) { case ENODEV: @@ -271,6 +284,8 @@ int main(int argc, char *argv[]) update_mtab_entry(new_argv[1], new_argv[2], "ceph", new_argv[options_pos], flags, 0, 0); } + block_signals(SIG_UNBLOCK); + free(new_argv); exit(0); }