Commit 059ade65 authored by Richard Weinberger's avatar Richard Weinberger Committed by Richard Weinberger

powerpc: Use sigsp()

Use sigsp() instead of the open coded variant.
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 8e2beafa
...@@ -31,20 +31,14 @@ int show_unhandled_signals = 1; ...@@ -31,20 +31,14 @@ int show_unhandled_signals = 1;
/* /*
* Allocate space for the signal frame * Allocate space for the signal frame
*/ */
void __user * get_sigframe(struct k_sigaction *ka, unsigned long sp, void __user *get_sigframe(struct ksignal *ksig, unsigned long sp,
size_t frame_size, int is_32) size_t frame_size, int is_32)
{ {
unsigned long oldsp, newsp; unsigned long oldsp, newsp;
/* Default to using normal stack */ /* Default to using normal stack */
oldsp = get_clean_sp(sp, is_32); oldsp = get_clean_sp(sp, is_32);
oldsp = sigsp(oldsp, ksig);
/* Check for alt stack */
if ((ka->sa.sa_flags & SA_ONSTACK) &&
current->sas_ss_size && !on_sig_stack(oldsp))
oldsp = (current->sas_ss_sp + current->sas_ss_size);
/* Get aligned frame */
newsp = (oldsp - frame_size) & ~0xFUL; newsp = (oldsp - frame_size) & ~0xFUL;
/* Check access */ /* Check access */
......
...@@ -994,7 +994,7 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset, ...@@ -994,7 +994,7 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
/* Set up Signal Frame */ /* Set up Signal Frame */
/* Put a Real Time Context onto stack */ /* Put a Real Time Context onto stack */
rt_sf = get_sigframe(&ksig->ka, get_tm_stackpointer(regs), sizeof(*rt_sf), 1); rt_sf = get_sigframe(ksig, get_tm_stackpointer(regs), sizeof(*rt_sf), 1);
addr = rt_sf; addr = rt_sf;
if (unlikely(rt_sf == NULL)) if (unlikely(rt_sf == NULL))
goto badframe; goto badframe;
...@@ -1417,7 +1417,7 @@ int handle_signal32(struct ksignal *ksig, sigset_t *oldset, struct pt_regs *regs ...@@ -1417,7 +1417,7 @@ int handle_signal32(struct ksignal *ksig, sigset_t *oldset, struct pt_regs *regs
unsigned long tramp; unsigned long tramp;
/* Set up Signal Frame */ /* Set up Signal Frame */
frame = get_sigframe(&ksig->ka, get_tm_stackpointer(regs), sizeof(*frame), 1); frame = get_sigframe(ksig, get_tm_stackpointer(regs), sizeof(*frame), 1);
if (unlikely(frame == NULL)) if (unlikely(frame == NULL))
goto badframe; goto badframe;
sc = (struct sigcontext __user *) &frame->sctx; sc = (struct sigcontext __user *) &frame->sctx;
......
...@@ -714,7 +714,7 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs ...@@ -714,7 +714,7 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs
unsigned long newsp = 0; unsigned long newsp = 0;
long err = 0; long err = 0;
frame = get_sigframe(&ksig->ka, get_tm_stackpointer(regs), sizeof(*frame), 0); frame = get_sigframe(ksig, get_tm_stackpointer(regs), sizeof(*frame), 0);
if (unlikely(frame == NULL)) if (unlikely(frame == NULL))
goto badframe; goto badframe;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment