diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2006-05-29 23:51:37 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-06-09 07:20:57 -0400 |
commit | a5bba930d802009c259e56c8d53086d96f63813b (patch) | |
tree | 8dd60002042bc0795b3d0544fcae7f5082405b16 /arch/powerpc/kernel/signal_32.c | |
parent | 98a90c02792f22afd8161f96fc9b9f0f0eb0880e (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.c | 8 |
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; |