提交 d66a270b 编写于 作者: M Mathieu Desnoyers 提交者: Steven Rostedt (VMware)

tracepoint: Do not warn on ENOMEM

Tracepoint should only warn when a kernel API user does not respect the
required preconditions (e.g. same tracepoint enabled twice, or called
to remove a tracepoint that does not exist).

Silence warning in out-of-memory conditions, given that the error is
returned to the caller.

This ensures that out-of-memory error-injection testing does not trigger
warnings in tracepoint.c, which were seen by syzbot.

Link: https://lkml.kernel.org/r/001a114465e241a8720567419a72@google.com
Link: https://lkml.kernel.org/r/001a1140e0de15fc910567464190@google.com
Link: http://lkml.kernel.org/r/20180315124424.32319-1-mathieu.desnoyers@efficios.com

CC: Peter Zijlstra <peterz@infradead.org>
CC: Jiri Olsa <jolsa@redhat.com>
CC: Arnaldo Carvalho de Melo <acme@kernel.org>
CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
CC: Namhyung Kim <namhyung@kernel.org>
CC: stable@vger.kernel.org
Fixes: de7b2973 ("tracepoint: Use struct pointer instead of name hash for reg/unreg tracepoints")
Reported-by: syzbot+9c0d616860575a73166a@syzkaller.appspotmail.com
Reported-by: syzbot+4e9ae7fa46233396f64d@syzkaller.appspotmail.com
Signed-off-by: NMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
上级 dcf23457
...@@ -207,7 +207,7 @@ static int tracepoint_add_func(struct tracepoint *tp, ...@@ -207,7 +207,7 @@ static int tracepoint_add_func(struct tracepoint *tp,
lockdep_is_held(&tracepoints_mutex)); lockdep_is_held(&tracepoints_mutex));
old = func_add(&tp_funcs, func, prio); old = func_add(&tp_funcs, func, prio);
if (IS_ERR(old)) { if (IS_ERR(old)) {
WARN_ON_ONCE(1); WARN_ON_ONCE(PTR_ERR(old) != -ENOMEM);
return PTR_ERR(old); return PTR_ERR(old);
} }
...@@ -239,7 +239,7 @@ static int tracepoint_remove_func(struct tracepoint *tp, ...@@ -239,7 +239,7 @@ static int tracepoint_remove_func(struct tracepoint *tp,
lockdep_is_held(&tracepoints_mutex)); lockdep_is_held(&tracepoints_mutex));
old = func_remove(&tp_funcs, func); old = func_remove(&tp_funcs, func);
if (IS_ERR(old)) { if (IS_ERR(old)) {
WARN_ON_ONCE(1); WARN_ON_ONCE(PTR_ERR(old) != -ENOMEM);
return PTR_ERR(old); return PTR_ERR(old);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册