Skip to content

Commit

Permalink
tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set
Browse files Browse the repository at this point in the history
Impact: fix confusing write() -EINVAL when changing the tracer

The following commit d9e5407 remade
alive the bug which made the set of a new tracer returning -EINVAL if
this is the longest name of tracer. This patch corrects it.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Frederic Weisbecker authored and Ingo Molnar committed Nov 16, 2008
1 parent ee02a2e commit e6e7a65
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -2655,6 +2655,9 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf,
char buf[max_tracer_type_len+1];
int i;
size_t ret;
int err;

ret = cnt;

if (cnt > max_tracer_type_len)
cnt = max_tracer_type_len;
Expand All @@ -2668,12 +2671,11 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf,
for (i = cnt - 1; i > 0 && isspace(buf[i]); i--)
buf[i] = 0;

ret = tracing_set_tracer(buf);
if (!ret)
ret = cnt;
err = tracing_set_tracer(buf);
if (err)
return err;

if (ret > 0)
filp->f_pos += ret;
filp->f_pos += ret;

return ret;
}
Expand Down

0 comments on commit e6e7a65

Please sign in to comment.