diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-29 03:45:15 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-29 03:45:15 -0500 |
commit | e1df957670aef74ffd9a4ad93e6d2c90bf6b4845 (patch) | |
tree | bca1fcfef55b3e3e82c9a822b4ac6428fce2b419 /arch/x86/kernel/signal.c | |
parent | 2b583d8bc8d7105b58d7481a4a0ceb718dac49c6 (diff) | |
parent | 3c92ec8ae91ecf59d88c798301833d7cf83f2179 (diff) |
Merge branch 'linus' into perfcounters/core
Conflicts:
fs/exec.c
include/linux/init_task.h
Simple context conflicts.
Diffstat (limited to 'arch/x86/kernel/signal.c')
-rw-r--r-- | arch/x86/kernel/signal.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index dee553c503d3..4fa5243c2069 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <asm/syscall.h> | 35 | #include <asm/syscall.h> |
36 | #include <asm/syscalls.h> | 36 | #include <asm/syscalls.h> |
37 | 37 | ||
38 | #include "sigframe.h" | 38 | #include <asm/sigframe.h> |
39 | 39 | ||
40 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 40 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
41 | 41 | ||
@@ -594,17 +594,7 @@ asmlinkage unsigned long sys_sigreturn(unsigned long __unused) | |||
594 | return ax; | 594 | return ax; |
595 | 595 | ||
596 | badframe: | 596 | badframe: |
597 | if (show_unhandled_signals && printk_ratelimit()) { | 597 | signal_fault(regs, frame, "sigreturn"); |
598 | printk("%s%s[%d] bad frame in sigreturn frame:" | ||
599 | "%p ip:%lx sp:%lx oeax:%lx", | ||
600 | task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG, | ||
601 | current->comm, task_pid_nr(current), frame, regs->ip, | ||
602 | regs->sp, regs->orig_ax); | ||
603 | print_vma_addr(" in ", regs->ip); | ||
604 | printk(KERN_CONT "\n"); | ||
605 | } | ||
606 | |||
607 | force_sig(SIGSEGV, current); | ||
608 | 598 | ||
609 | return 0; | 599 | return 0; |
610 | } | 600 | } |
@@ -681,6 +671,11 @@ static int signr_convert(int sig) | |||
681 | #define is_ia32 0 | 671 | #define is_ia32 0 |
682 | #endif /* CONFIG_IA32_EMULATION */ | 672 | #endif /* CONFIG_IA32_EMULATION */ |
683 | 673 | ||
674 | int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | ||
675 | sigset_t *set, struct pt_regs *regs); | ||
676 | int ia32_setup_frame(int sig, struct k_sigaction *ka, | ||
677 | sigset_t *set, struct pt_regs *regs); | ||
678 | |||
684 | #endif /* CONFIG_X86_32 */ | 679 | #endif /* CONFIG_X86_32 */ |
685 | 680 | ||
686 | static int | 681 | static int |
@@ -906,8 +901,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where) | |||
906 | struct task_struct *me = current; | 901 | struct task_struct *me = current; |
907 | 902 | ||
908 | if (show_unhandled_signals && printk_ratelimit()) { | 903 | if (show_unhandled_signals && printk_ratelimit()) { |
909 | printk(KERN_INFO | 904 | printk("%s" |
910 | "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", | 905 | "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", |
906 | task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG, | ||
911 | me->comm, me->pid, where, frame, | 907 | me->comm, me->pid, where, frame, |
912 | regs->ip, regs->sp, regs->orig_ax); | 908 | regs->ip, regs->sp, regs->orig_ax); |
913 | print_vma_addr(" in ", regs->ip); | 909 | print_vma_addr(" in ", regs->ip); |