Commit 5615e088 authored by Dan Carpenter's avatar Dan Carpenter Committed by Steven Rostedt (VMware)

tracing: Fix some alloc_event_probe() error handling bugs

There are two bugs in this code.  First, if the kzalloc() fails it leads
to a NULL dereference of "ep" on the next line.  Second, if the
alloc_event_probe() function returns an error then it leads to an
error pointer dereference in the caller.

Link: https://lkml.kernel.org/r/20210824115150.GI31143@kili

Fixes: 7491e2c4 ("tracing: Add a probe that attaches to trace events")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 54357f0c
...@@ -151,7 +151,7 @@ static struct trace_eprobe *alloc_event_probe(const char *group, ...@@ -151,7 +151,7 @@ static struct trace_eprobe *alloc_event_probe(const char *group,
ep = kzalloc(struct_size(ep, tp.args, nargs), GFP_KERNEL); ep = kzalloc(struct_size(ep, tp.args, nargs), GFP_KERNEL);
if (!ep) { if (!ep) {
trace_event_put_ref(ep->event); trace_event_put_ref(event);
goto error; goto error;
} }
ep->event = event; ep->event = event;
...@@ -851,7 +851,8 @@ static int __trace_eprobe_create(int argc, const char *argv[]) ...@@ -851,7 +851,8 @@ static int __trace_eprobe_create(int argc, const char *argv[])
ret = PTR_ERR(ep); ret = PTR_ERR(ep);
/* This must return -ENOMEM, else there is a bug */ /* This must return -ENOMEM, else there is a bug */
WARN_ON_ONCE(ret != -ENOMEM); WARN_ON_ONCE(ret != -ENOMEM);
goto error; /* We know ep is not allocated */ ep = NULL;
goto error;
} }
argc -= 2; argv += 2; argc -= 2; argv += 2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment