diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2014-11-12 15:18:16 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-11-19 15:25:43 -0500 |
commit | 85224da0b81a52a58b91feccdcd341856d8eb83d (patch) | |
tree | f050a16ad5158292350ccf3b027b73e80578f942 | |
parent | 9d9add34ec7b2cdd438b0b26481f8d1861bde45c (diff) |
kprobes/tracing: Use trace_seq_has_overflowed() for overflow checks
Instead of checking the return value of trace_seq_printf() and friends
for overflowing of the buffer, use the trace_seq_has_overflowed() helper
function.
This cleans up the code quite a bit and also takes us a step closer to
changing the return values of trace_seq_printf() and friends to void.
Link: http://lkml.kernel.org/r/20141114011411.181812785@goodmis.org
Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel/trace/trace_kprobe.c | 42 |
1 files changed, 16 insertions, 26 deletions
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index ef7e7f16ed1a..5edb518be345 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
@@ -1024,27 +1024,22 @@ print_kprobe_event(struct trace_iterator *iter, int flags, | |||
1024 | field = (struct kprobe_trace_entry_head *)iter->ent; | 1024 | field = (struct kprobe_trace_entry_head *)iter->ent; |
1025 | tp = container_of(event, struct trace_probe, call.event); | 1025 | tp = container_of(event, struct trace_probe, call.event); |
1026 | 1026 | ||
1027 | if (!trace_seq_printf(s, "%s: (", ftrace_event_name(&tp->call))) | 1027 | trace_seq_printf(s, "%s: (", ftrace_event_name(&tp->call)); |
1028 | goto partial; | ||
1029 | 1028 | ||
1030 | if (!seq_print_ip_sym(s, field->ip, flags | TRACE_ITER_SYM_OFFSET)) | 1029 | if (!seq_print_ip_sym(s, field->ip, flags | TRACE_ITER_SYM_OFFSET)) |
1031 | goto partial; | 1030 | goto out; |
1032 | 1031 | ||
1033 | if (!trace_seq_putc(s, ')')) | 1032 | trace_seq_putc(s, ')'); |
1034 | goto partial; | ||
1035 | 1033 | ||
1036 | data = (u8 *)&field[1]; | 1034 | data = (u8 *)&field[1]; |
1037 | for (i = 0; i < tp->nr_args; i++) | 1035 | for (i = 0; i < tp->nr_args; i++) |
1038 | if (!tp->args[i].type->print(s, tp->args[i].name, | 1036 | if (!tp->args[i].type->print(s, tp->args[i].name, |
1039 | data + tp->args[i].offset, field)) | 1037 | data + tp->args[i].offset, field)) |
1040 | goto partial; | 1038 | goto out; |
1041 | |||
1042 | if (!trace_seq_putc(s, '\n')) | ||
1043 | goto partial; | ||
1044 | 1039 | ||
1045 | return TRACE_TYPE_HANDLED; | 1040 | trace_seq_putc(s, '\n'); |
1046 | partial: | 1041 | out: |
1047 | return TRACE_TYPE_PARTIAL_LINE; | 1042 | return trace_handle_return(s); |
1048 | } | 1043 | } |
1049 | 1044 | ||
1050 | static enum print_line_t | 1045 | static enum print_line_t |
@@ -1060,33 +1055,28 @@ print_kretprobe_event(struct trace_iterator *iter, int flags, | |||
1060 | field = (struct kretprobe_trace_entry_head *)iter->ent; | 1055 | field = (struct kretprobe_trace_entry_head *)iter->ent; |
1061 | tp = container_of(event, struct trace_probe, call.event); | 1056 | tp = container_of(event, struct trace_probe, call.event); |
1062 | 1057 | ||
1063 | if (!trace_seq_printf(s, "%s: (", ftrace_event_name(&tp->call))) | 1058 | trace_seq_printf(s, "%s: (", ftrace_event_name(&tp->call)); |
1064 | goto partial; | ||
1065 | 1059 | ||
1066 | if (!seq_print_ip_sym(s, field->ret_ip, flags | TRACE_ITER_SYM_OFFSET)) | 1060 | if (!seq_print_ip_sym(s, field->ret_ip, flags | TRACE_ITER_SYM_OFFSET)) |
1067 | goto partial; | 1061 | goto out; |
1068 | 1062 | ||
1069 | if (!trace_seq_puts(s, " <- ")) | 1063 | trace_seq_puts(s, " <- "); |
1070 | goto partial; | ||
1071 | 1064 | ||
1072 | if (!seq_print_ip_sym(s, field->func, flags & ~TRACE_ITER_SYM_OFFSET)) | 1065 | if (!seq_print_ip_sym(s, field->func, flags & ~TRACE_ITER_SYM_OFFSET)) |
1073 | goto partial; | 1066 | goto out; |
1074 | 1067 | ||
1075 | if (!trace_seq_putc(s, ')')) | 1068 | trace_seq_putc(s, ')'); |
1076 | goto partial; | ||
1077 | 1069 | ||
1078 | data = (u8 *)&field[1]; | 1070 | data = (u8 *)&field[1]; |
1079 | for (i = 0; i < tp->nr_args; i++) | 1071 | for (i = 0; i < tp->nr_args; i++) |
1080 | if (!tp->args[i].type->print(s, tp->args[i].name, | 1072 | if (!tp->args[i].type->print(s, tp->args[i].name, |
1081 | data + tp->args[i].offset, field)) | 1073 | data + tp->args[i].offset, field)) |
1082 | goto partial; | 1074 | goto out; |
1083 | 1075 | ||
1084 | if (!trace_seq_putc(s, '\n')) | 1076 | trace_seq_putc(s, '\n'); |
1085 | goto partial; | ||
1086 | 1077 | ||
1087 | return TRACE_TYPE_HANDLED; | 1078 | out: |
1088 | partial: | 1079 | return trace_handle_return(s); |
1089 | return TRACE_TYPE_PARTIAL_LINE; | ||
1090 | } | 1080 | } |
1091 | 1081 | ||
1092 | 1082 | ||