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