|
@@ -2086,11 +2086,18 @@ static inline int is_si_special(const struct siginfo *info)
|
|
return info <= SEND_SIG_FORCED;
|
|
return info <= SEND_SIG_FORCED;
|
|
}
|
|
}
|
|
|
|
|
|
-/* True if we are on the alternate signal stack. */
|
|
|
|
-
|
|
|
|
|
|
+/*
|
|
|
|
+ * True if we are on the alternate signal stack.
|
|
|
|
+ */
|
|
static inline int on_sig_stack(unsigned long sp)
|
|
static inline int on_sig_stack(unsigned long sp)
|
|
{
|
|
{
|
|
- return (sp - current->sas_ss_sp < current->sas_ss_size);
|
|
|
|
|
|
+#ifdef CONFIG_STACK_GROWSUP
|
|
|
|
+ return sp >= current->sas_ss_sp &&
|
|
|
|
+ sp - current->sas_ss_sp < current->sas_ss_size;
|
|
|
|
+#else
|
|
|
|
+ return sp > current->sas_ss_sp &&
|
|
|
|
+ sp - current->sas_ss_sp <= current->sas_ss_size;
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
static inline int sas_ss_flags(unsigned long sp)
|
|
static inline int sas_ss_flags(unsigned long sp)
|