aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32/kernel
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-03-05 07:34:54 -0500
committerRichard Weinberger <richard@sigma-star.at>2014-08-06 07:03:46 -0400
commit065f31bd263b61b1fbf6c0ae4e7c0d3cf7373b10 (patch)
treeb6908b8da5108a7f4eb498b17e664bb27f5da730 /arch/avr32/kernel
parent38a7be3c280bb9f9c4c892cf5ff51c847e959cf1 (diff)
avr32: Use sigsp()
Use sigsp() instead of the open coded variant. Signed-off-by: Richard Weinberger <richard@nod.at> Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Diffstat (limited to 'arch/avr32/kernel')
-rw-r--r--arch/avr32/kernel/signal.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/avr32/kernel/signal.c b/arch/avr32/kernel/signal.c
index dda150fe73bb..d309fbcc3bd6 100644
--- a/arch/avr32/kernel/signal.c
+++ b/arch/avr32/kernel/signal.c
@@ -127,12 +127,9 @@ setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs)
127} 127}
128 128
129static inline void __user * 129static inline void __user *
130get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, int framesize) 130get_sigframe(struct ksignal *ksig, struct pt_regs *regs, int framesize)
131{ 131{
132 unsigned long sp = regs->sp; 132 unsigned long sp = sigsp(regs->sp, ksig);
133
134 if ((ka->sa.sa_flags & SA_ONSTACK) && !sas_ss_flags(sp))
135 sp = current->sas_ss_sp + current->sas_ss_size;
136 133
137 return (void __user *)((sp - framesize) & ~3); 134 return (void __user *)((sp - framesize) & ~3);
138} 135}
@@ -143,7 +140,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
143 struct rt_sigframe __user *frame; 140 struct rt_sigframe __user *frame;
144 int err = 0; 141 int err = 0;
145 142
146 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 143 frame = get_sigframe(ksig, regs, sizeof(*frame));
147 err = -EFAULT; 144 err = -EFAULT;
148 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 145 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
149 goto out; 146 goto out;