tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set
Impact: fix confusing write() -EINVAL when changing the tracer
The following commit d9e540762f
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>
This commit is contained in:
committed by
Ingo Molnar
parent
ee02a2e5c8
commit
e6e7a65aab
@@ -2655,6 +2655,9 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf,
|
|||||||
char buf[max_tracer_type_len+1];
|
char buf[max_tracer_type_len+1];
|
||||||
int i;
|
int i;
|
||||||
size_t ret;
|
size_t ret;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
ret = cnt;
|
||||||
|
|
||||||
if (cnt > max_tracer_type_len)
|
if (cnt > max_tracer_type_len)
|
||||||
cnt = max_tracer_type_len;
|
cnt = max_tracer_type_len;
|
||||||
@@ -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--)
|
for (i = cnt - 1; i > 0 && isspace(buf[i]); i--)
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
|
|
||||||
ret = tracing_set_tracer(buf);
|
err = tracing_set_tracer(buf);
|
||||||
if (!ret)
|
if (err)
|
||||||
ret = cnt;
|
return err;
|
||||||
|
|
||||||
if (ret > 0)
|
filp->f_pos += ret;
|
||||||
filp->f_pos += ret;
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user