From aac7f357341eb0dab77a9ae0795032d84542c953 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 18 Nov 2012 15:29:16 -0500 Subject: [PATCH] --- yaml --- r: 347780 b: refs/heads/master c: 5c49574ffd7ac07eae8c3b065d19e6ebc7e4760f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/signal.h | 2 ++ trunk/kernel/signal.c | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index fd6a12e93e50..43d49752e874 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 031b6566983ad9c0247087f039af22b3f87596a3 +refs/heads/master: 5c49574ffd7ac07eae8c3b065d19e6ebc7e4760f diff --git a/trunk/include/linux/signal.h b/trunk/include/linux/signal.h index e19a011b43b7..5969522136fe 100644 --- a/trunk/include/linux/signal.h +++ b/trunk/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/trunk/kernel/signal.c b/trunk/kernel/signal.c index e75e4bd2839b..887f2fefe207 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -3103,6 +3103,13 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s 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 /**