aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/signal_32.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-05-29 23:51:37 -0400
committerPaul Mackerras <paulus@samba.org>2006-06-09 07:20:57 -0400
commita5bba930d802009c259e56c8d53086d96f63813b (patch)
tree8dd60002042bc0795b3d0544fcae7f5082405b16 /arch/powerpc/kernel/signal_32.c
parent98a90c02792f22afd8161f96fc9b9f0f0eb0880e (diff)
[PATCH] powerpc vdso updates
This patch cleans up some locking & error handling in the ppc vdso and moves the vdso base pointer from the thread struct to the mm context where it more logically belongs. It brings the powerpc implementation closer to Ingo's new x86 one and also adds an arch_vma_name() function allowing to print [vsdo] in /proc/<pid>/maps if Ingo's x86 vdso patch is also applied. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/signal_32.c')
-rw-r--r--arch/powerpc/kernel/signal_32.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
index 01e3c08cb550..22f078984845 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -757,10 +757,10 @@ static int handle_rt_signal(unsigned long sig, struct k_sigaction *ka,
757 757
758 /* Save user registers on the stack */ 758 /* Save user registers on the stack */
759 frame = &rt_sf->uc.uc_mcontext; 759 frame = &rt_sf->uc.uc_mcontext;
760 if (vdso32_rt_sigtramp && current->thread.vdso_base) { 760 if (vdso32_rt_sigtramp && current->mm->context.vdso_base) {
761 if (save_user_regs(regs, frame, 0)) 761 if (save_user_regs(regs, frame, 0))
762 goto badframe; 762 goto badframe;
763 regs->link = current->thread.vdso_base + vdso32_rt_sigtramp; 763 regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
764 } else { 764 } else {
765 if (save_user_regs(regs, frame, __NR_rt_sigreturn)) 765 if (save_user_regs(regs, frame, __NR_rt_sigreturn))
766 goto badframe; 766 goto badframe;
@@ -1029,10 +1029,10 @@ static int handle_signal(unsigned long sig, struct k_sigaction *ka,
1029 || __put_user(sig, &sc->signal)) 1029 || __put_user(sig, &sc->signal))
1030 goto badframe; 1030 goto badframe;
1031 1031
1032 if (vdso32_sigtramp && current->thread.vdso_base) { 1032 if (vdso32_sigtramp && current->mm->context.vdso_base) {
1033 if (save_user_regs(regs, &frame->mctx, 0)) 1033 if (save_user_regs(regs, &frame->mctx, 0))
1034 goto badframe; 1034 goto badframe;
1035 regs->link = current->thread.vdso_base + vdso32_sigtramp; 1035 regs->link = current->mm->context.vdso_base + vdso32_sigtramp;
1036 } else { 1036 } else {
1037 if (save_user_regs(regs, &frame->mctx, __NR_sigreturn)) 1037 if (save_user_regs(regs, &frame->mctx, __NR_sigreturn))
1038 goto badframe; 1038 goto badframe;