aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/dev.c')
-rw-r--r--kernel/dev.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/dev.c b/kernel/dev.c
index ef46eb9..8ce078b 100644
--- a/kernel/dev.c
+++ b/kernel/dev.c
@@ -65,6 +65,24 @@ static inline void restore_sigs(sigset_t *oldset)
sigprocmask(SIG_SETMASK, oldset, NULL);
}
#else
+#ifdef HAVE_RECALC_SIGPENDING_TSK
+static inline void block_sigs(sigset_t *oldset)
+{
+ spin_lock_irq(&current->sighand->siglock);
+ *oldset = current->blocked;
+ siginitsetinv(&current->blocked, sigmask(SIGKILL) & ~oldset->sig[0]);
+ recalc_sigpending();
+ spin_unlock_irq(&current->sighand->siglock);
+}
+
+static inline void restore_sigs(sigset_t *oldset)
+{
+ spin_lock_irq(&current->sighand->siglock);
+ current->blocked = *oldset;
+ recalc_sigpending();
+ spin_unlock_irq(&current->sighand->siglock);
+}
+#else
static inline void block_sigs(sigset_t *oldset)
{
spin_lock_irq(&current->sigmask_lock);
@@ -82,6 +100,7 @@ static inline void restore_sigs(sigset_t *oldset)
spin_unlock_irq(&current->sigmask_lock);
}
#endif
+#endif
void fuse_reset_request(struct fuse_req *req)
{