76 lines
2.2 KiB
Diff
76 lines
2.2 KiB
Diff
autofs-5.1.8 - make signal handling consistent
|
|
|
|
From: Ian Kent <raven@themaw.net>
|
|
|
|
There's a mixture of usage of sigprocmask() and pthread_sigmask(), change
|
|
to use the pthread versions of this for correctness.
|
|
|
|
The only exception to this is reset_signals() which is done in a forked
|
|
process that is single threaded so it's valid to keep them as they are.
|
|
|
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
|
---
|
|
CHANGELOG | 1 +
|
|
daemon/automount.c | 8 ++++----
|
|
daemon/spawn.c | 1 -
|
|
3 files changed, 5 insertions(+), 5 deletions(-)
|
|
|
|
--- autofs-5.1.7.orig/CHANGELOG
|
|
+++ autofs-5.1.7/CHANGELOG
|
|
@@ -121,6 +121,7 @@
|
|
- dont delay expire.
|
|
- make amd mapent search function name clear.
|
|
- rename statemachine() to signal_handler().
|
|
+- make signal handling consistent.
|
|
|
|
25/01/2021 autofs-5.1.7
|
|
- make bind mounts propagation slave by default.
|
|
--- autofs-5.1.7.orig/daemon/automount.c
|
|
+++ autofs-5.1.7/daemon/automount.c
|
|
@@ -2214,7 +2214,7 @@ static void do_master_list_reset(struct
|
|
|
|
static int do_master_read_master(struct master *master, time_t *age, int wait)
|
|
{
|
|
- sigset_t signalset;
|
|
+ sigset_t signalset, savesigset;
|
|
/* Wait must be at least 1 second */
|
|
unsigned int retry_wait = 2;
|
|
unsigned int elapsed = 0;
|
|
@@ -2225,7 +2225,7 @@ static int do_master_read_master(struct
|
|
sigaddset(&signalset, SIGTERM);
|
|
sigaddset(&signalset, SIGINT);
|
|
sigaddset(&signalset, SIGHUP);
|
|
- sigprocmask(SIG_UNBLOCK, &signalset, NULL);
|
|
+ pthread_sigmask(SIG_UNBLOCK, &signalset, &savesigset);
|
|
|
|
while (1) {
|
|
struct timespec t = { retry_wait, 0 };
|
|
@@ -2251,7 +2251,7 @@ static int do_master_read_master(struct
|
|
}
|
|
}
|
|
|
|
- sigprocmask(SIG_BLOCK, &signalset, NULL);
|
|
+ pthread_sigmask(SIG_SETMASK, &savesigset, NULL);
|
|
|
|
return ret;
|
|
}
|
|
@@ -2298,7 +2298,7 @@ int main(int argc, char *argv[])
|
|
sigdelset(&block_sigs, SIGILL);
|
|
sigdelset(&block_sigs, SIGFPE);
|
|
sigdelset(&block_sigs, SIGTRAP);
|
|
- sigprocmask(SIG_BLOCK, &block_sigs, NULL);
|
|
+ pthread_sigmask(SIG_BLOCK, &block_sigs, NULL);
|
|
|
|
program = argv[0];
|
|
|
|
--- autofs-5.1.7.orig/daemon/spawn.c
|
|
+++ autofs-5.1.7/daemon/spawn.c
|
|
@@ -46,7 +46,6 @@ void dump_core(void)
|
|
sigemptyset(&segv);
|
|
sigaddset(&segv, SIGSEGV);
|
|
pthread_sigmask(SIG_UNBLOCK, &segv, NULL);
|
|
- sigprocmask(SIG_UNBLOCK, &segv, NULL);
|
|
|
|
raise(SIGSEGV);
|
|
}
|