We pass a kernel pointer to do_sigaltstack in sys32_sigaltstack, so
authorRalf Baechle <ralf@linux-mips.org>
Wed, 13 Apr 2005 18:18:04 +0000 (18:18 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 29 Oct 2005 18:31:06 +0000 (19:31 +0100)
we need to do the set_fs(KERNEL_DS) thing around this call.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/signal32.c

index e8c380dceb86e2a4ad62786bbb644134e8cd7515..5e7d0fa026729fe647a921f47050a968dba833e9 100644 (file)
@@ -488,6 +488,7 @@ __attribute_used__ noinline static void
 _sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
 {
        struct rt_sigframe32 *frame;
+       mm_segment_t old_fs;
        sigset_t set;
        stack_t st;
        s32 sp;
@@ -518,7 +519,10 @@ _sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
 
        /* It is more difficult to avoid calling this function than to
           call it and ignore errors.  */
+       old_fs = get_fs();
+       set_fs (KERNEL_DS);
        do_sigaltstack(&st, NULL, regs.regs[29]);
+       set_fs (old_fs);
 
        /*
         * Don't let your children do this ...