diff options
Diffstat (limited to 'arch/powerpc/kernel/signal_32.c')
-rw-r--r-- | arch/powerpc/kernel/signal_32.c | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index b96a3a010c26..78b76dc54dfb 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/errno.h> | 25 | #include <linux/errno.h> |
26 | #include <linux/elf.h> | 26 | #include <linux/elf.h> |
27 | #include <linux/ptrace.h> | 27 | #include <linux/ptrace.h> |
28 | #include <linux/ratelimit.h> | ||
28 | #ifdef CONFIG_PPC64 | 29 | #ifdef CONFIG_PPC64 |
29 | #include <linux/syscalls.h> | 30 | #include <linux/syscalls.h> |
30 | #include <linux/compat.h> | 31 | #include <linux/compat.h> |
@@ -892,11 +893,12 @@ badframe: | |||
892 | printk("badframe in handle_rt_signal, regs=%p frame=%p newsp=%lx\n", | 893 | printk("badframe in handle_rt_signal, regs=%p frame=%p newsp=%lx\n", |
893 | regs, frame, newsp); | 894 | regs, frame, newsp); |
894 | #endif | 895 | #endif |
895 | if (show_unhandled_signals && printk_ratelimit()) | 896 | if (show_unhandled_signals) |
896 | printk(KERN_INFO "%s[%d]: bad frame in handle_rt_signal32: " | 897 | printk_ratelimited(KERN_INFO |
897 | "%p nip %08lx lr %08lx\n", | 898 | "%s[%d]: bad frame in handle_rt_signal32: " |
898 | current->comm, current->pid, | 899 | "%p nip %08lx lr %08lx\n", |
899 | addr, regs->nip, regs->link); | 900 | current->comm, current->pid, |
901 | addr, regs->nip, regs->link); | ||
900 | 902 | ||
901 | force_sigsegv(sig, current); | 903 | force_sigsegv(sig, current); |
902 | return 0; | 904 | return 0; |
@@ -1058,11 +1060,12 @@ long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8, | |||
1058 | return 0; | 1060 | return 0; |
1059 | 1061 | ||
1060 | bad: | 1062 | bad: |
1061 | if (show_unhandled_signals && printk_ratelimit()) | 1063 | if (show_unhandled_signals) |
1062 | printk(KERN_INFO "%s[%d]: bad frame in sys_rt_sigreturn: " | 1064 | printk_ratelimited(KERN_INFO |
1063 | "%p nip %08lx lr %08lx\n", | 1065 | "%s[%d]: bad frame in sys_rt_sigreturn: " |
1064 | current->comm, current->pid, | 1066 | "%p nip %08lx lr %08lx\n", |
1065 | rt_sf, regs->nip, regs->link); | 1067 | current->comm, current->pid, |
1068 | rt_sf, regs->nip, regs->link); | ||
1066 | 1069 | ||
1067 | force_sig(SIGSEGV, current); | 1070 | force_sig(SIGSEGV, current); |
1068 | return 0; | 1071 | return 0; |
@@ -1149,12 +1152,12 @@ int sys_debug_setcontext(struct ucontext __user *ctx, | |||
1149 | * We kill the task with a SIGSEGV in this situation. | 1152 | * We kill the task with a SIGSEGV in this situation. |
1150 | */ | 1153 | */ |
1151 | if (do_setcontext(ctx, regs, 1)) { | 1154 | if (do_setcontext(ctx, regs, 1)) { |
1152 | if (show_unhandled_signals && printk_ratelimit()) | 1155 | if (show_unhandled_signals) |
1153 | printk(KERN_INFO "%s[%d]: bad frame in " | 1156 | printk_ratelimited(KERN_INFO "%s[%d]: bad frame in " |
1154 | "sys_debug_setcontext: %p nip %08lx " | 1157 | "sys_debug_setcontext: %p nip %08lx " |
1155 | "lr %08lx\n", | 1158 | "lr %08lx\n", |
1156 | current->comm, current->pid, | 1159 | current->comm, current->pid, |
1157 | ctx, regs->nip, regs->link); | 1160 | ctx, regs->nip, regs->link); |
1158 | 1161 | ||
1159 | force_sig(SIGSEGV, current); | 1162 | force_sig(SIGSEGV, current); |
1160 | goto out; | 1163 | goto out; |
@@ -1236,11 +1239,12 @@ badframe: | |||
1236 | printk("badframe in handle_signal, regs=%p frame=%p newsp=%lx\n", | 1239 | printk("badframe in handle_signal, regs=%p frame=%p newsp=%lx\n", |
1237 | regs, frame, newsp); | 1240 | regs, frame, newsp); |
1238 | #endif | 1241 | #endif |
1239 | if (show_unhandled_signals && printk_ratelimit()) | 1242 | if (show_unhandled_signals) |
1240 | printk(KERN_INFO "%s[%d]: bad frame in handle_signal32: " | 1243 | printk_ratelimited(KERN_INFO |
1241 | "%p nip %08lx lr %08lx\n", | 1244 | "%s[%d]: bad frame in handle_signal32: " |
1242 | current->comm, current->pid, | 1245 | "%p nip %08lx lr %08lx\n", |
1243 | frame, regs->nip, regs->link); | 1246 | current->comm, current->pid, |
1247 | frame, regs->nip, regs->link); | ||
1244 | 1248 | ||
1245 | force_sigsegv(sig, current); | 1249 | force_sigsegv(sig, current); |
1246 | return 0; | 1250 | return 0; |
@@ -1288,11 +1292,12 @@ long sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8, | |||
1288 | return 0; | 1292 | return 0; |
1289 | 1293 | ||
1290 | badframe: | 1294 | badframe: |
1291 | if (show_unhandled_signals && printk_ratelimit()) | 1295 | if (show_unhandled_signals) |
1292 | printk(KERN_INFO "%s[%d]: bad frame in sys_sigreturn: " | 1296 | printk_ratelimited(KERN_INFO |
1293 | "%p nip %08lx lr %08lx\n", | 1297 | "%s[%d]: bad frame in sys_sigreturn: " |
1294 | current->comm, current->pid, | 1298 | "%p nip %08lx lr %08lx\n", |
1295 | addr, regs->nip, regs->link); | 1299 | current->comm, current->pid, |
1300 | addr, regs->nip, regs->link); | ||
1296 | 1301 | ||
1297 | force_sig(SIGSEGV, current); | 1302 | force_sig(SIGSEGV, current); |
1298 | return 0; | 1303 | return 0; |