powerpc: Use sigsp()
Use sigsp() instead of the open coded variant. Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
committed by
Richard Weinberger
parent
8e2beafa2f
commit
059ade650a
@@ -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,
|
|||||||
|
|
||||||
/* 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
|
|||||||
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
|
|||||||
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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user