Once x86 exports its do_signal(), the prototypes will clash.
Fix the clash and also improve the code a bit: remove the
unnecessary kern_do_signal() indirection. This allows
interrupt_end() to share the 'regs' parameter calculation.
Also remove the unused return code to match x86.
Minimally build and boot tested.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Denys Vlasenko <vda.linux@googlemail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Richard Weinberger <richard.weinberger@gmail.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: paulmck@linux.vnet.ibm.com
Link: http://lkml.kernel.org/r/67c57eac09a589bac3c6c5ff22f9623ec55a184a.1435952415.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
 extern unsigned long alloc_stack(int order, int atomic);
 extern void free_stack(unsigned long stack, int order);
 
-extern int do_signal(void);
+struct pt_regs;
+extern void do_signal(struct pt_regs *regs);
 extern void interrupt_end(void);
 extern void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs);
 
 
 
 void interrupt_end(void)
 {
+       struct pt_regs *regs = ¤t->thread.regs;
+
        if (need_resched())
                schedule();
        if (test_thread_flag(TIF_SIGPENDING))
-               do_signal();
+               do_signal(regs);
        if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME))
-               tracehook_notify_resume(¤t->thread.regs);
+               tracehook_notify_resume(regs);
 }
 
 void exit_thread(void)
 
        signal_setup_done(err, ksig, singlestep);
 }
 
-static int kern_do_signal(struct pt_regs *regs)
+void do_signal(struct pt_regs *regs)
 {
        struct ksignal ksig;
        int handled_sig = 0;
         */
        if (!handled_sig)
                restore_saved_sigmask();
-       return handled_sig;
-}
-
-int do_signal(void)
-{
-       return kern_do_signal(¤t->thread.regs);
 }
 
                /* We are under mmap_sem, release it such that current can terminate */
                up_write(¤t->mm->mmap_sem);
                force_sig(SIGKILL, current);
-               do_signal();
+               do_signal(¤t->thread.regs);
        }
 }
 
 
 void fatal_sigsegv(void)
 {
        force_sigsegv(SIGSEGV, current);
-       do_signal();
+       do_signal(¤t->thread.regs);
        /*
         * This is to tell gcc that we're not returning - do_signal
         * can, in general, return, but in this case, it's not, since