]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mn10300: get rid of calling do_notify_resume() when returning to kernel mode
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 30 Apr 2012 23:49:23 +0000 (19:49 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 6 Sep 2012 17:57:26 +0000 (13:57 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/mn10300/kernel/entry.S
arch/mn10300/kernel/signal.c

index 8e11f9f48999e172437a925bb9713a2c9c1236c2..976c5402f53f7202470e2b2e07867239f092e6fb 100644 (file)
@@ -94,6 +94,10 @@ restore_all:
 ###############################################################################
        ALIGN
 syscall_exit_work:
+       mov     (REG_EPSW,fp),d0
+       and     EPSW_nSL,d0
+       beq     resume_kernel           # returning to supervisor mode
+
        btst    _TIF_SYSCALL_TRACE,d2
        beq     work_pending
        LOCAL_IRQ_ENABLE                # could let syscall_trace_exit() call
index 4d584ae29ae1c1c2c53746ee3a6d1d9b78e7042a..b2c0ac71512808071b828eeca5ad83e6fdf62500 100644 (file)
@@ -475,11 +475,6 @@ static void do_signal(struct pt_regs *regs)
        siginfo_t info;
        int signr;
 
-       /* we want the common case to go fast, which is why we may in certain
-        * cases get here from kernel mode */
-       if (!user_mode(regs))
-               return;
-
        signr = get_signal_to_deliver(&info, &ka, regs, NULL);
        if (signr > 0) {
                if (handle_signal(signr, &info, &ka, regs) == 0) {