nfs-utils/rpc.gssd-catch-signal.patch

40 lines
1.2 KiB
Diff

Make sure signal used by 'dnotify' is not blocked.
Some desktop environments block all realtime signals
and they remain blocked for all child processes.
So if you run rpc.gssd from a terminal window, the
signal it used for dnotify is blocked and never
deliverred. So it doesn't work.
So we unblock that signal.
bnc#406832
Signed-off-by: NeilBrown <neilb@suse.de>
Index: nfs-utils-1.1.3/utils/gssd/gssd_main_loop.c
===================================================================
--- nfs-utils-1.1.3.orig/utils/gssd/gssd_main_loop.c
+++ nfs-utils-1.1.3/utils/gssd/gssd_main_loop.c
@@ -99,6 +99,7 @@ gssd_run()
int ret;
struct sigaction dn_act;
int fd;
+ sigset_t set;
/* Taken from linux/Documentation/dnotify.txt: */
dn_act.sa_sigaction = dir_notify_handler;
@@ -106,6 +107,11 @@ gssd_run()
dn_act.sa_flags = SA_SIGINFO;
sigaction(DNOTIFY_SIGNAL, &dn_act, NULL);
+ /* just in case the signal is blocked... */
+ sigemptyset(&set);
+ sigaddset(&set, DNOTIFY_SIGNAL);
+ sigprocmask(SIG_UNBLOCK, &set, NULL);
+
if ((fd = open(pipefs_nfsdir, O_RDONLY)) == -1) {
printerr(0, "ERROR: failed to open %s: %s\n",
pipefs_nfsdir, strerror(errno));