Skip to content

Commit affb028

Browse files
committed
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
2 parents ee9294d + 0b3dec0 commit affb028

File tree

2 files changed

+15
-34
lines changed

2 files changed

+15
-34
lines changed

kernel/trace/trace_events_filter.c

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,18 +1704,16 @@ static int create_filter(struct trace_event_call *call,
17041704
struct event_filter **filterp)
17051705
{
17061706
struct filter_parse_error *pe = NULL;
1707-
struct event_filter *filter = NULL;
17081707
int err;
17091708

1710-
err = create_filter_start(filter_string, set_str, &pe, &filter);
1709+
err = create_filter_start(filter_string, set_str, &pe, filterp);
17111710
if (err)
17121711
return err;
17131712

1714-
err = process_preds(call, filter_string, filter, pe);
1713+
err = process_preds(call, filter_string, *filterp, pe);
17151714
if (err && set_str)
1716-
append_filter_err(pe, filter);
1715+
append_filter_err(pe, *filterp);
17171716

1718-
*filterp = filter;
17191717
return err;
17201718
}
17211719

@@ -1739,32 +1737,30 @@ static int create_system_filter(struct trace_subsystem_dir *dir,
17391737
struct trace_array *tr,
17401738
char *filter_str, struct event_filter **filterp)
17411739
{
1742-
struct event_filter *filter = NULL;
17431740
struct filter_parse_error *pe = NULL;
17441741
int err;
17451742

1746-
err = create_filter_start(filter_str, true, &pe, &filter);
1743+
err = create_filter_start(filter_str, true, &pe, filterp);
17471744
if (!err) {
17481745
err = process_system_preds(dir, tr, pe, filter_str);
17491746
if (!err) {
17501747
/* System filters just show a default message */
1751-
kfree(filter->filter_string);
1752-
filter->filter_string = NULL;
1748+
kfree((*filterp)->filter_string);
1749+
(*filterp)->filter_string = NULL;
17531750
} else {
1754-
append_filter_err(pe, filter);
1751+
append_filter_err(pe, *filterp);
17551752
}
17561753
}
17571754
create_filter_finish(pe);
17581755

1759-
*filterp = filter;
17601756
return err;
17611757
}
17621758

17631759
/* caller must hold event_mutex */
17641760
int apply_event_filter(struct trace_event_file *file, char *filter_string)
17651761
{
17661762
struct trace_event_call *call = file->event_call;
1767-
struct event_filter *filter;
1763+
struct event_filter *filter = NULL;
17681764
int err;
17691765

17701766
if (!strcmp(strstrip(filter_string), "0")) {
@@ -1817,7 +1813,7 @@ int apply_subsystem_event_filter(struct trace_subsystem_dir *dir,
18171813
{
18181814
struct event_subsystem *system = dir->subsystem;
18191815
struct trace_array *tr = dir->tr;
1820-
struct event_filter *filter;
1816+
struct event_filter *filter = NULL;
18211817
int err = 0;
18221818

18231819
mutex_lock(&event_mutex);
@@ -2024,7 +2020,7 @@ int ftrace_profile_set_filter(struct perf_event *event, int event_id,
20242020
char *filter_str)
20252021
{
20262022
int err;
2027-
struct event_filter *filter;
2023+
struct event_filter *filter = NULL;
20282024
struct trace_event_call *call;
20292025

20302026
mutex_lock(&event_mutex);
@@ -2140,7 +2136,7 @@ static struct test_filter_data_t {
21402136
#undef YES
21412137
#undef NO
21422138

2143-
#define DATA_CNT (sizeof(test_filter_data)/sizeof(struct test_filter_data_t))
2139+
#define DATA_CNT ARRAY_SIZE(test_filter_data)
21442140

21452141
static int test_pred_visited;
21462142

kernel/trace/trace_uprobe.c

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ static int create_trace_uprobe(int argc, char **argv)
446446
if (ret)
447447
goto fail_address_parse;
448448

449-
inode = igrab(d_inode(path.dentry));
449+
inode = igrab(d_real_inode(path.dentry));
450450
path_put(&path);
451451

452452
if (!inode || !S_ISREG(inode->i_mode)) {
@@ -602,24 +602,9 @@ static int probes_seq_show(struct seq_file *m, void *v)
602602
char c = is_ret_probe(tu) ? 'r' : 'p';
603603
int i;
604604

605-
seq_printf(m, "%c:%s/%s", c, tu->tp.call.class->system,
606-
trace_event_name(&tu->tp.call));
607-
seq_printf(m, " %s:", tu->filename);
608-
609-
/* Don't print "0x (null)" when offset is 0 */
610-
if (tu->offset) {
611-
seq_printf(m, "0x%px", (void *)tu->offset);
612-
} else {
613-
switch (sizeof(void *)) {
614-
case 4:
615-
seq_printf(m, "0x00000000");
616-
break;
617-
case 8:
618-
default:
619-
seq_printf(m, "0x0000000000000000");
620-
break;
621-
}
622-
}
605+
seq_printf(m, "%c:%s/%s %s:0x%0*lx", c, tu->tp.call.class->system,
606+
trace_event_name(&tu->tp.call), tu->filename,
607+
(int)(sizeof(void *) * 2), tu->offset);
623608

624609
for (i = 0; i < tu->tp.nr_args; i++)
625610
seq_printf(m, " %s=%s", tu->tp.args[i].name, tu->tp.args[i].comm);

0 commit comments

Comments
 (0)