|
@@ -407,19 +407,13 @@ badframe:
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static void __user *compat_get_sigframe(struct k_sigaction *ka,
|
|
|
+static void __user *compat_get_sigframe(struct ksignal *ksig,
|
|
|
struct pt_regs *regs,
|
|
|
int framesize)
|
|
|
{
|
|
|
- compat_ulong_t sp = regs->compat_sp;
|
|
|
+ compat_ulong_t sp = sigsp(regs->compat_sp, ksig);
|
|
|
void __user *frame;
|
|
|
|
|
|
- /*
|
|
|
- * This is the X/Open sanctioned signal stack switching.
|
|
|
- */
|
|
|
- if ((ka->sa.sa_flags & SA_ONSTACK) && !sas_ss_flags(sp))
|
|
|
- sp = current->sas_ss_sp + current->sas_ss_size;
|
|
|
-
|
|
|
/*
|
|
|
* ATPCS B01 mandates 8-byte alignment
|
|
|
*/
|
|
@@ -526,7 +520,7 @@ int compat_setup_rt_frame(int usig, struct ksignal *ksig,
|
|
|
struct compat_rt_sigframe __user *frame;
|
|
|
int err = 0;
|
|
|
|
|
|
- frame = compat_get_sigframe(&ksig->ka, regs, sizeof(*frame));
|
|
|
+ frame = compat_get_sigframe(ksig, regs, sizeof(*frame));
|
|
|
|
|
|
if (!frame)
|
|
|
return 1;
|
|
@@ -555,7 +549,7 @@ int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
|
|
|
struct compat_sigframe __user *frame;
|
|
|
int err = 0;
|
|
|
|
|
|
- frame = compat_get_sigframe(&ksig->ka, regs, sizeof(*frame));
|
|
|
+ frame = compat_get_sigframe(ksig, regs, sizeof(*frame));
|
|
|
|
|
|
if (!frame)
|
|
|
return 1;
|