]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/kernel/signal_32.c
I2C: Fix OMAP I2C status register handling in IRQ processing
[linux-2.6-omap-h63xx.git] / arch / x86 / kernel / signal_32.c
index 74df55895c8ce8aa3496b7b783ddc88e1191d0f4..0157a6f0f41f501ee19c607aa3a5c593c7824d7f 100644 (file)
@@ -198,12 +198,15 @@ asmlinkage int sys_sigreturn(unsigned long __unused)
        return ax;
 
 badframe:
-       if (show_unhandled_signals && printk_ratelimit())
+       if (show_unhandled_signals && printk_ratelimit()) {
                printk("%s%s[%d] bad frame in sigreturn frame:%p ip:%lx"
-                      " sp:%lx oeax:%lx\n",
+                      " sp:%lx oeax:%lx",
                    task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG,
                    current->comm, task_pid_nr(current), frame, regs->ip,
                    regs->sp, regs->orig_ax);
+               print_vma_addr(" in ", regs->ip);
+               printk("\n");
+       }
 
        force_sig(SIGSEGV, current);
        return 0;
@@ -365,7 +368,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
        if (current->binfmt->hasvdso)
                restorer = VDSO32_SYMBOL(current->mm->context.vdso, sigreturn);
        else
-               restorer = (void *)&frame->retcode;
+               restorer = &frame->retcode;
        if (ka->sa.sa_flags & SA_RESTORER)
                restorer = ka->sa.sa_restorer;
 
@@ -404,7 +407,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
         * The tracer may want to single-step inside the
         * handler too.
         */
-       regs->flags &= ~TF_MASK;
+       regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
        if (test_thread_flag(TIF_SINGLESTEP))
                ptrace_notify(SIGTRAP);
 
@@ -497,7 +500,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
         * The tracer may want to single-step inside the
         * handler too.
         */
-       regs->flags &= ~TF_MASK;
+       regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
        if (test_thread_flag(TIF_SINGLESTEP))
                ptrace_notify(SIGTRAP);