diff options
| author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2014-11-12 17:41:33 -0500 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2014-11-19 15:25:46 -0500 |
| commit | 183742f08c5532c0cd3c3d3fa184a26c092e2157 (patch) | |
| tree | bd1abb05d0d6e18313a5d8d34f23eca3a392f512 /kernel/trace | |
| parent | 8579a107a6490511bbe35d6f0be5be5b8b697775 (diff) | |
tracing: Do not use return values of trace_seq_printf() in syscall tracing
The functions trace_seq_printf() and friends will not be returning values
soon and will be void functions. To know if they succeeded or not, the
functions trace_seq_has_overflowed() and trace_handle_return() should be
used instead.
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/trace_syscalls.c | 47 |
1 files changed, 19 insertions, 28 deletions
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 4dc8b79c5f75..a72f3d8d813e 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
| @@ -114,7 +114,7 @@ print_syscall_enter(struct trace_iterator *iter, int flags, | |||
| 114 | struct trace_entry *ent = iter->ent; | 114 | struct trace_entry *ent = iter->ent; |
| 115 | struct syscall_trace_enter *trace; | 115 | struct syscall_trace_enter *trace; |
| 116 | struct syscall_metadata *entry; | 116 | struct syscall_metadata *entry; |
| 117 | int i, ret, syscall; | 117 | int i, syscall; |
| 118 | 118 | ||
| 119 | trace = (typeof(trace))ent; | 119 | trace = (typeof(trace))ent; |
| 120 | syscall = trace->nr; | 120 | syscall = trace->nr; |
| @@ -128,35 +128,28 @@ print_syscall_enter(struct trace_iterator *iter, int flags, | |||
| 128 | goto end; | 128 | goto end; |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | ret = trace_seq_printf(s, "%s(", entry->name); | 131 | trace_seq_printf(s, "%s(", entry->name); |
| 132 | if (!ret) | ||
| 133 | return TRACE_TYPE_PARTIAL_LINE; | ||
| 134 | 132 | ||
| 135 | for (i = 0; i < entry->nb_args; i++) { | 133 | for (i = 0; i < entry->nb_args; i++) { |
| 134 | |||
| 135 | if (trace_seq_has_overflowed(s)) | ||
| 136 | goto end; | ||
| 137 | |||
| 136 | /* parameter types */ | 138 | /* parameter types */ |
| 137 | if (trace_flags & TRACE_ITER_VERBOSE) { | 139 | if (trace_flags & TRACE_ITER_VERBOSE) |
| 138 | ret = trace_seq_printf(s, "%s ", entry->types[i]); | 140 | trace_seq_printf(s, "%s ", entry->types[i]); |
| 139 | if (!ret) | 141 | |
| 140 | return TRACE_TYPE_PARTIAL_LINE; | ||
| 141 | } | ||
| 142 | /* parameter values */ | 142 | /* parameter values */ |
| 143 | ret = trace_seq_printf(s, "%s: %lx%s", entry->args[i], | 143 | trace_seq_printf(s, "%s: %lx%s", entry->args[i], |
| 144 | trace->args[i], | 144 | trace->args[i], |
| 145 | i == entry->nb_args - 1 ? "" : ", "); | 145 | i == entry->nb_args - 1 ? "" : ", "); |
| 146 | if (!ret) | ||
| 147 | return TRACE_TYPE_PARTIAL_LINE; | ||
| 148 | } | 146 | } |
| 149 | 147 | ||
| 150 | ret = trace_seq_putc(s, ')'); | 148 | trace_seq_putc(s, ')'); |
| 151 | if (!ret) | ||
| 152 | return TRACE_TYPE_PARTIAL_LINE; | ||
| 153 | |||
| 154 | end: | 149 | end: |
| 155 | ret = trace_seq_putc(s, '\n'); | 150 | trace_seq_putc(s, '\n'); |
| 156 | if (!ret) | ||
| 157 | return TRACE_TYPE_PARTIAL_LINE; | ||
| 158 | 151 | ||
| 159 | return TRACE_TYPE_HANDLED; | 152 | return trace_handle_return(s); |
| 160 | } | 153 | } |
| 161 | 154 | ||
| 162 | static enum print_line_t | 155 | static enum print_line_t |
| @@ -168,7 +161,6 @@ print_syscall_exit(struct trace_iterator *iter, int flags, | |||
| 168 | struct syscall_trace_exit *trace; | 161 | struct syscall_trace_exit *trace; |
| 169 | int syscall; | 162 | int syscall; |
| 170 | struct syscall_metadata *entry; | 163 | struct syscall_metadata *entry; |
| 171 | int ret; | ||
| 172 | 164 | ||
| 173 | trace = (typeof(trace))ent; | 165 | trace = (typeof(trace))ent; |
| 174 | syscall = trace->nr; | 166 | syscall = trace->nr; |
| @@ -176,7 +168,7 @@ print_syscall_exit(struct trace_iterator *iter, int flags, | |||
| 176 | 168 | ||
| 177 | if (!entry) { | 169 | if (!entry) { |
| 178 | trace_seq_putc(s, '\n'); | 170 | trace_seq_putc(s, '\n'); |
| 179 | return TRACE_TYPE_HANDLED; | 171 | goto out; |
| 180 | } | 172 | } |
| 181 | 173 | ||
| 182 | if (entry->exit_event->event.type != ent->type) { | 174 | if (entry->exit_event->event.type != ent->type) { |
| @@ -184,12 +176,11 @@ print_syscall_exit(struct trace_iterator *iter, int flags, | |||
| 184 | return TRACE_TYPE_UNHANDLED; | 176 | return TRACE_TYPE_UNHANDLED; |
| 185 | } | 177 | } |
| 186 | 178 | ||
| 187 | ret = trace_seq_printf(s, "%s -> 0x%lx\n", entry->name, | 179 | trace_seq_printf(s, "%s -> 0x%lx\n", entry->name, |
| 188 | trace->ret); | 180 | trace->ret); |
| 189 | if (!ret) | ||
| 190 | return TRACE_TYPE_PARTIAL_LINE; | ||
| 191 | 181 | ||
| 192 | return TRACE_TYPE_HANDLED; | 182 | out: |
| 183 | return trace_handle_return(s); | ||
| 193 | } | 184 | } |
| 194 | 185 | ||
| 195 | extern char *__bad_type_size(void); | 186 | extern char *__bad_type_size(void); |
