Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c37a33035720a0faf1f609dc7c2c07080ed83629
Commit:     c37a33035720a0faf1f609dc7c2c07080ed83629
Parent:     52fda4870e74b43fa5ef5171cc89ac40e5b53ed1
Author:     Hirokazu Takata <[EMAIL PROTECTED]>
AuthorDate: Wed Sep 12 17:51:35 2007 +0900
Committer:  Hirokazu Takata <[EMAIL PROTECTED]>
CommitDate: Wed Nov 28 01:24:04 2007 +0900

    m32r: Update sys_rt_sigsuspend
    
    Update sys_rt_sigsuspend() of arch/m32r/signal.c.
    This modification is derived from generic one of kernel/signal.c.
    
    Signed-off-by: Hirokazu Takata <[EMAIL PROTECTED]>
---
 arch/m32r/kernel/signal.c      |   17 +++++++----------
 include/asm-m32r/thread_info.h |   11 ++++++++---
 2 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c
index a753d79..1812454 100644
--- a/arch/m32r/kernel/signal.c
+++ b/arch/m32r/kernel/signal.c
@@ -36,7 +36,7 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
                  unsigned long r2, unsigned long r3, unsigned long r4,
                  unsigned long r5, unsigned long r6, struct pt_regs *regs)
 {
-       sigset_t saveset, newset;
+       sigset_t newset;
 
        /* XXX: Don't preclude handling different sized sigset_t's.  */
        if (sigsetsize != sizeof(sigset_t))
@@ -44,21 +44,18 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t 
sigsetsize,
 
        if (copy_from_user(&newset, unewset, sizeof(newset)))
                return -EFAULT;
-       sigdelsetmask(&newset, ~_BLOCKABLE);
+       sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP));
 
        spin_lock_irq(&current->sighand->siglock);
-       saveset = current->blocked;
+       current->saved_sigmask = current->blocked;
        current->blocked = newset;
        recalc_sigpending();
        spin_unlock_irq(&current->sighand->siglock);
 
-       regs->r0 = -EINTR;
-       while (1) {
-               current->state = TASK_INTERRUPTIBLE;
-               schedule();
-               if (do_signal(regs, &saveset))
-                       return regs->r0;
-       }
+       current->state = TASK_INTERRUPTIBLE;
+       schedule();
+       set_thread_flag(TIF_RESTORE_SIGMASK);
+       return -ERESTARTNOHAND;
 }
 
 asmlinkage int
diff --git a/include/asm-m32r/thread_info.h b/include/asm-m32r/thread_info.h
index c039820..1effcd0 100644
--- a/include/asm-m32r/thread_info.h
+++ b/include/asm-m32r/thread_info.h
@@ -149,16 +149,21 @@ static inline unsigned int get_thread_fault_code(void)
 #define TIF_NEED_RESCHED       2       /* rescheduling necessary */
 #define TIF_SINGLESTEP         3       /* restore singlestep on return to user 
mode */
 #define TIF_IRET               4       /* return with iret */
-#define TIF_POLLING_NRFLAG     16      /* true if poll_idle() is polling 
TIF_NEED_RESCHED */
-                                       /* 31..28 fault code */
-#define TIF_MEMDIE             17
+#define TIF_RESTORE_SIGMASK    8       /* restore signal mask in do_signal() */
+#define TIF_USEDFPU            16      /* FPU was used by this task this 
quantum (SMP) */
+#define TIF_POLLING_NRFLAG     17      /* true if poll_idle() is polling 
TIF_NEED_RESCHED */
+#define TIF_MEMDIE             18      /* OOM killer killed process */
+#define TIF_FREEZE             19      /* is freezing for suspend */
 
 #define _TIF_SYSCALL_TRACE     (1<<TIF_SYSCALL_TRACE)
 #define _TIF_SIGPENDING                (1<<TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED      (1<<TIF_NEED_RESCHED)
 #define _TIF_SINGLESTEP                (1<<TIF_SINGLESTEP)
 #define _TIF_IRET              (1<<TIF_IRET)
+#define _TIF_RESTORE_SIGMASK   (1<<TIF_RESTORE_SIGMASK)
+#define _TIF_USEDFPU           (1<<TIF_USEDFPU)
 #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
+#define _TIF_FREEZE            (1<<TIF_FREEZE)
 
 #define _TIF_WORK_MASK         0x0000FFFE      /* work to do on 
interrupt/exception return */
 #define _TIF_ALLWORK_MASK      0x0000FFFF      /* work to do on any return to 
u-space */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to