Messages in this thread Patch in this message | | | Date | Sat, 04 Oct 2008 22:04:44 +0200 | From | Frederic Weisbecker <> | Subject | [PATCH -tip] Return an error when setting a nonexistent tracer |
| |
When one try to set a nonexistent tracer, no error is returned as if the name of the tracer was correct. We should return -EINVAL.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> --- kernel/trace/trace.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 1cd2e81..9b30473 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2384,9 +2384,11 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf, struct tracer *t; char buf[max_tracer_type_len+1]; int i; + size_t ret; if (cnt > max_tracer_type_len) cnt = max_tracer_type_len; + ret = cnt; if (copy_from_user(&buf, ubuf, cnt)) return -EFAULT; @@ -2402,7 +2404,11 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf, if (strcmp(t->name, buf) == 0) break; } - if (!t || t == current_trace) + if (!t) { + ret = -EINVAL; + goto out; + } + if (t == current_trace) goto out; if (current_trace && current_trace->reset) @@ -2415,9 +2421,10 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf, out: mutex_unlock(&trace_types_lock); - filp->f_pos += cnt; + if (ret == cnt) + filp->f_pos += cnt; - return cnt; + return ret; } static ssize_t
| |