diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-07-11 16:03:51 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-07-11 16:03:51 -0400 |
| commit | c25c74b7476e27180e9b76840e963e542023f118 (patch) | |
| tree | d52c9ed6428b7f45853536d6e927241b77bd2dcf | |
| parent | 86125df731cb260f425b852ec0c672ac12449d31 (diff) | |
| parent | 0fc8c3581dd42bc8f530314ca86db2d861485731 (diff) | |
Merge tag 'trace-v4.18-rc3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull kprobe fix from Steven Rostedt:
"This fixes a memory leak in the kprobe code"
* tag 'trace-v4.18-rc3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
tracing/kprobe: Release kprobe print_fmt properly
| -rw-r--r-- | kernel/trace/trace_kprobe.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index daa81571b22a..21f718472942 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
| @@ -1480,8 +1480,10 @@ create_local_trace_kprobe(char *func, void *addr, unsigned long offs, | |||
| 1480 | } | 1480 | } |
| 1481 | 1481 | ||
| 1482 | ret = __register_trace_kprobe(tk); | 1482 | ret = __register_trace_kprobe(tk); |
| 1483 | if (ret < 0) | 1483 | if (ret < 0) { |
| 1484 | kfree(tk->tp.call.print_fmt); | ||
| 1484 | goto error; | 1485 | goto error; |
| 1486 | } | ||
| 1485 | 1487 | ||
| 1486 | return &tk->tp.call; | 1488 | return &tk->tp.call; |
| 1487 | error: | 1489 | error: |
| @@ -1501,6 +1503,8 @@ void destroy_local_trace_kprobe(struct trace_event_call *event_call) | |||
| 1501 | } | 1503 | } |
| 1502 | 1504 | ||
| 1503 | __unregister_trace_kprobe(tk); | 1505 | __unregister_trace_kprobe(tk); |
| 1506 | |||
| 1507 | kfree(tk->tp.call.print_fmt); | ||
| 1504 | free_trace_kprobe(tk); | 1508 | free_trace_kprobe(tk); |
| 1505 | } | 1509 | } |
| 1506 | #endif /* CONFIG_PERF_EVENTS */ | 1510 | #endif /* CONFIG_PERF_EVENTS */ |
