Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'trace-v4.20-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace

Pull tracing fixes from Steven Rostedt:
"While running various ftrace tests on new development code, the
kmemleak detector found some allocations that were not freed
correctly.

This fixes a couple of leaks in the event trigger code as well as in
adding function trace filters in trace instances"

* tag 'trace-v4.20-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
tracing: Fix memory leak of instance function hash filters
tracing: Fix memory leak in set_trigger_filter()
tracing: Fix memory leak in create_filter()

+9 -3
+1
kernel/trace/ftrace.c
··· 5460 5460 if (ops->flags & FTRACE_OPS_FL_ENABLED) 5461 5461 ftrace_shutdown(ops, 0); 5462 5462 ops->flags |= FTRACE_OPS_FL_DELETED; 5463 + ftrace_free_filter(ops); 5463 5464 mutex_unlock(&ftrace_lock); 5464 5465 } 5465 5466
+4 -1
kernel/trace/trace_events_filter.c
··· 570 570 } 571 571 } 572 572 573 + kfree(op_stack); 574 + kfree(inverts); 573 575 return prog; 574 576 out_free: 575 577 kfree(op_stack); 576 - kfree(prog_stack); 577 578 kfree(inverts); 579 + kfree(prog_stack); 578 580 return ERR_PTR(ret); 579 581 } 580 582 ··· 1720 1718 err = process_preds(call, filter_string, *filterp, pe); 1721 1719 if (err && set_str) 1722 1720 append_filter_err(pe, *filterp); 1721 + create_filter_finish(pe); 1723 1722 1724 1723 return err; 1725 1724 }
+4 -2
kernel/trace/trace_events_trigger.c
··· 732 732 733 733 /* The filter is for the 'trigger' event, not the triggered event */ 734 734 ret = create_event_filter(file->event_call, filter_str, false, &filter); 735 - if (ret) 736 - goto out; 735 + /* 736 + * If create_event_filter() fails, filter still needs to be freed. 737 + * Which the calling code will do with data->filter. 738 + */ 737 739 assign: 738 740 tmp = rcu_access_pointer(data->filter); 739 741