Commit 4ba7978e98a3ff92cebfb0f31a02c309e3ffa1fe

Authored by Li Zefan
Committed by Ingo Molnar
1 parent 3c235a337e

tracing: Check the return value of trace_get_user()

Return immediately if trace_get_user() returned failure.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4AB86614.7020803@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 2 changed files with 7 additions and 9 deletions Side-by-side Diff

kernel/trace/ftrace.c
... ... @@ -2202,7 +2202,7 @@
2202 2202 struct trace_parser *parser;
2203 2203 ssize_t ret, read;
2204 2204  
2205   - if (!cnt || cnt < 0)
  2205 + if (!cnt)
2206 2206 return 0;
2207 2207  
2208 2208 mutex_lock(&ftrace_regex_lock);
... ... @@ -2216,7 +2216,7 @@
2216 2216 parser = &iter->parser;
2217 2217 read = trace_get_user(parser, ubuf, cnt, ppos);
2218 2218  
2219   - if (trace_parser_loaded(parser) &&
  2219 + if (read >= 0 && trace_parser_loaded(parser) &&
2220 2220 !trace_parser_cont(parser)) {
2221 2221 ret = ftrace_process_regex(parser->buffer,
2222 2222 parser->idx, enable);
... ... @@ -2552,8 +2552,7 @@
2552 2552 size_t cnt, loff_t *ppos)
2553 2553 {
2554 2554 struct trace_parser parser;
2555   - size_t read = 0;
2556   - ssize_t ret;
  2555 + ssize_t read, ret;
2557 2556  
2558 2557 if (!cnt || cnt < 0)
2559 2558 return 0;
... ... @@ -2572,7 +2571,7 @@
2572 2571  
2573 2572 read = trace_get_user(&parser, ubuf, cnt, ppos);
2574 2573  
2575   - if (trace_parser_loaded((&parser))) {
  2574 + if (read >= 0 && trace_parser_loaded((&parser))) {
2576 2575 parser.buffer[parser.idx] = 0;
2577 2576  
2578 2577 /* we allow only one expression at a time */
kernel/trace/trace_events.c
... ... @@ -232,10 +232,9 @@
232 232 size_t cnt, loff_t *ppos)
233 233 {
234 234 struct trace_parser parser;
235   - size_t read = 0;
236   - ssize_t ret;
  235 + ssize_t read, ret;
237 236  
238   - if (!cnt || cnt < 0)
  237 + if (!cnt)
239 238 return 0;
240 239  
241 240 ret = tracing_update_buffers();
... ... @@ -247,7 +246,7 @@
247 246  
248 247 read = trace_get_user(&parser, ubuf, cnt, ppos);
249 248  
250   - if (trace_parser_loaded((&parser))) {
  249 + if (read >= 0 && trace_parser_loaded((&parser))) {
251 250 int set = 1;
252 251  
253 252 if (*parser.buffer == '!')