diff options
-rw-r--r-- | include/linux/thread_info.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h index 43d8162c696..81c5f82f066 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h | |||
@@ -97,11 +97,17 @@ static inline int test_ti_thread_flag(struct thread_info *ti, int flag) | |||
97 | * set_restore_sigmask() - make sure saved_sigmask processing gets done | 97 | * set_restore_sigmask() - make sure saved_sigmask processing gets done |
98 | * | 98 | * |
99 | * This sets TIF_RESTORE_SIGMASK and ensures that the arch signal code | 99 | * This sets TIF_RESTORE_SIGMASK and ensures that the arch signal code |
100 | * will run before returning to user mode, to process the flag. | 100 | * will run before returning to user mode, to process the flag. For |
101 | * all callers, TIF_SIGPENDING is already set or it's no harm to set | ||
102 | * it. TIF_RESTORE_SIGMASK need not be in the set of bits that the | ||
103 | * arch code will notice on return to user mode, in case those bits | ||
104 | * are scarce. We set TIF_SIGPENDING here to ensure that the arch | ||
105 | * signal code always gets run when TIF_RESTORE_SIGMASK is set. | ||
101 | */ | 106 | */ |
102 | static inline void set_restore_sigmask(void) | 107 | static inline void set_restore_sigmask(void) |
103 | { | 108 | { |
104 | set_thread_flag(TIF_RESTORE_SIGMASK); | 109 | set_thread_flag(TIF_RESTORE_SIGMASK); |
110 | set_thread_flag(TIF_SIGPENDING); | ||
105 | } | 111 | } |
106 | #endif /* TIF_RESTORE_SIGMASK */ | 112 | #endif /* TIF_RESTORE_SIGMASK */ |
107 | 113 | ||