Commit affb0280 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull tracing fixes from Steven Rostedt:
 "A few clean ups and bug fixes:

   - replace open coded "ARRAY_SIZE()" with macro

   - updates to uprobes

   - bug fix for perf event filter on error path"

* tag 'trace-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  tracing: Enforce passing in filter=NULL to create_filter()
  trace_uprobe: Simplify probes_seq_show()
  trace_uprobe: Use %lx to display offset
  tracing/uprobe: Add support for overlayfs
  tracing: Use ARRAY_SIZE() macro instead of open coding it
parents ee9294d6 0b3dec05
...@@ -1704,18 +1704,16 @@ static int create_filter(struct trace_event_call *call, ...@@ -1704,18 +1704,16 @@ static int create_filter(struct trace_event_call *call,
struct event_filter **filterp) struct event_filter **filterp)
{ {
struct filter_parse_error *pe = NULL; struct filter_parse_error *pe = NULL;
struct event_filter *filter = NULL;
int err; int err;
err = create_filter_start(filter_string, set_str, &pe, &filter); err = create_filter_start(filter_string, set_str, &pe, filterp);
if (err) if (err)
return err; return err;
err = process_preds(call, filter_string, filter, pe); err = process_preds(call, filter_string, *filterp, pe);
if (err && set_str) if (err && set_str)
append_filter_err(pe, filter); append_filter_err(pe, *filterp);
*filterp = filter;
return err; return err;
} }
...@@ -1739,24 +1737,22 @@ static int create_system_filter(struct trace_subsystem_dir *dir, ...@@ -1739,24 +1737,22 @@ static int create_system_filter(struct trace_subsystem_dir *dir,
struct trace_array *tr, struct trace_array *tr,
char *filter_str, struct event_filter **filterp) char *filter_str, struct event_filter **filterp)
{ {
struct event_filter *filter = NULL;
struct filter_parse_error *pe = NULL; struct filter_parse_error *pe = NULL;
int err; int err;
err = create_filter_start(filter_str, true, &pe, &filter); err = create_filter_start(filter_str, true, &pe, filterp);
if (!err) { if (!err) {
err = process_system_preds(dir, tr, pe, filter_str); err = process_system_preds(dir, tr, pe, filter_str);
if (!err) { if (!err) {
/* System filters just show a default message */ /* System filters just show a default message */
kfree(filter->filter_string); kfree((*filterp)->filter_string);
filter->filter_string = NULL; (*filterp)->filter_string = NULL;
} else { } else {
append_filter_err(pe, filter); append_filter_err(pe, *filterp);
} }
} }
create_filter_finish(pe); create_filter_finish(pe);
*filterp = filter;
return err; return err;
} }
...@@ -1764,7 +1760,7 @@ static int create_system_filter(struct trace_subsystem_dir *dir, ...@@ -1764,7 +1760,7 @@ static int create_system_filter(struct trace_subsystem_dir *dir,
int apply_event_filter(struct trace_event_file *file, char *filter_string) int apply_event_filter(struct trace_event_file *file, char *filter_string)
{ {
struct trace_event_call *call = file->event_call; struct trace_event_call *call = file->event_call;
struct event_filter *filter; struct event_filter *filter = NULL;
int err; int err;
if (!strcmp(strstrip(filter_string), "0")) { if (!strcmp(strstrip(filter_string), "0")) {
...@@ -1817,7 +1813,7 @@ int apply_subsystem_event_filter(struct trace_subsystem_dir *dir, ...@@ -1817,7 +1813,7 @@ int apply_subsystem_event_filter(struct trace_subsystem_dir *dir,
{ {
struct event_subsystem *system = dir->subsystem; struct event_subsystem *system = dir->subsystem;
struct trace_array *tr = dir->tr; struct trace_array *tr = dir->tr;
struct event_filter *filter; struct event_filter *filter = NULL;
int err = 0; int err = 0;
mutex_lock(&event_mutex); mutex_lock(&event_mutex);
...@@ -2024,7 +2020,7 @@ int ftrace_profile_set_filter(struct perf_event *event, int event_id, ...@@ -2024,7 +2020,7 @@ int ftrace_profile_set_filter(struct perf_event *event, int event_id,
char *filter_str) char *filter_str)
{ {
int err; int err;
struct event_filter *filter; struct event_filter *filter = NULL;
struct trace_event_call *call; struct trace_event_call *call;
mutex_lock(&event_mutex); mutex_lock(&event_mutex);
...@@ -2140,7 +2136,7 @@ static struct test_filter_data_t { ...@@ -2140,7 +2136,7 @@ static struct test_filter_data_t {
#undef YES #undef YES
#undef NO #undef NO
#define DATA_CNT (sizeof(test_filter_data)/sizeof(struct test_filter_data_t)) #define DATA_CNT ARRAY_SIZE(test_filter_data)
static int test_pred_visited; static int test_pred_visited;
......
...@@ -446,7 +446,7 @@ static int create_trace_uprobe(int argc, char **argv) ...@@ -446,7 +446,7 @@ static int create_trace_uprobe(int argc, char **argv)
if (ret) if (ret)
goto fail_address_parse; goto fail_address_parse;
inode = igrab(d_inode(path.dentry)); inode = igrab(d_real_inode(path.dentry));
path_put(&path); path_put(&path);
if (!inode || !S_ISREG(inode->i_mode)) { if (!inode || !S_ISREG(inode->i_mode)) {
...@@ -602,24 +602,9 @@ static int probes_seq_show(struct seq_file *m, void *v) ...@@ -602,24 +602,9 @@ static int probes_seq_show(struct seq_file *m, void *v)
char c = is_ret_probe(tu) ? 'r' : 'p'; char c = is_ret_probe(tu) ? 'r' : 'p';
int i; int i;
seq_printf(m, "%c:%s/%s", c, tu->tp.call.class->system, seq_printf(m, "%c:%s/%s %s:0x%0*lx", c, tu->tp.call.class->system,
trace_event_name(&tu->tp.call)); trace_event_name(&tu->tp.call), tu->filename,
seq_printf(m, " %s:", tu->filename); (int)(sizeof(void *) * 2), tu->offset);
/* Don't print "0x (null)" when offset is 0 */
if (tu->offset) {
seq_printf(m, "0x%px", (void *)tu->offset);
} else {
switch (sizeof(void *)) {
case 4:
seq_printf(m, "0x00000000");
break;
case 8:
default:
seq_printf(m, "0x0000000000000000");
break;
}
}
for (i = 0; i < tu->tp.nr_args; i++) for (i = 0; i < tu->tp.nr_args; i++)
seq_printf(m, " %s=%s", tu->tp.args[i].name, tu->tp.args[i].comm); seq_printf(m, " %s=%s", tu->tp.args[i].name, tu->tp.args[i].comm);
......
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