diff options
Diffstat (limited to 'kernel/dev.c')
-rw-r--r-- | kernel/dev.c | 19 |
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(¤t->sighand->siglock); + *oldset = current->blocked; + siginitsetinv(¤t->blocked, sigmask(SIGKILL) & ~oldset->sig[0]); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); +} + +static inline void restore_sigs(sigset_t *oldset) +{ + spin_lock_irq(¤t->sighand->siglock); + current->blocked = *oldset; + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); +} +#else static inline void block_sigs(sigset_t *oldset) { spin_lock_irq(¤t->sigmask_lock); @@ -82,6 +100,7 @@ static inline void restore_sigs(sigset_t *oldset) spin_unlock_irq(¤t->sigmask_lock); } #endif +#endif void fuse_reset_request(struct fuse_req *req) { |