From: Al Viro Date: Sun, 18 Nov 2012 20:29:16 +0000 (-0500) Subject: new helper: restore_altstack() X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=5c49574ffd7ac07eae8c3b065d19e6ebc7e4760f;p=linux-beck.git new helper: restore_altstack() to be used by rt_sigreturn instances Signed-off-by: Al Viro --- diff --git a/include/linux/signal.h b/include/linux/signal.h index e19a011b43b7..5969522136fe 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -385,4 +385,6 @@ int unhandled_signal(struct task_struct *tsk, int sig); void signals_init(void); +int restore_altstack(const stack_t __user *); + #endif /* _LINUX_SIGNAL_H */ diff --git a/kernel/signal.c b/kernel/signal.c index e75e4bd2839b..887f2fefe207 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -3103,6 +3103,13 @@ out: return error; } +int restore_altstack(const stack_t __user *uss) +{ + int err = do_sigaltstack(uss, NULL, current_user_stack_pointer()); + /* squash all but EFAULT for now */ + return err == -EFAULT ? err : 0; +} + #ifdef __ARCH_WANT_SYS_SIGPENDING /**