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 -----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCWs+2YxQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qsRUAP9okqGRR/01bBLqNKiJ2j5YeBc9YlWl R2rC0xbwVBLgJQEAwpE5jxahqKutbgrBDalDeCmXmeTOhSbGRJaBxXqwzwE= =ZAuQ -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
affb028071
|
@ -1704,18 +1704,16 @@ static int create_filter(struct trace_event_call *call,
|
|||
struct event_filter **filterp)
|
||||
{
|
||||
struct filter_parse_error *pe = NULL;
|
||||
struct event_filter *filter = NULL;
|
||||
int err;
|
||||
|
||||
err = create_filter_start(filter_string, set_str, &pe, &filter);
|
||||
err = create_filter_start(filter_string, set_str, &pe, filterp);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = process_preds(call, filter_string, filter, pe);
|
||||
err = process_preds(call, filter_string, *filterp, pe);
|
||||
if (err && set_str)
|
||||
append_filter_err(pe, filter);
|
||||
append_filter_err(pe, *filterp);
|
||||
|
||||
*filterp = filter;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -1739,24 +1737,22 @@ static int create_system_filter(struct trace_subsystem_dir *dir,
|
|||
struct trace_array *tr,
|
||||
char *filter_str, struct event_filter **filterp)
|
||||
{
|
||||
struct event_filter *filter = NULL;
|
||||
struct filter_parse_error *pe = NULL;
|
||||
int err;
|
||||
|
||||
err = create_filter_start(filter_str, true, &pe, &filter);
|
||||
err = create_filter_start(filter_str, true, &pe, filterp);
|
||||
if (!err) {
|
||||
err = process_system_preds(dir, tr, pe, filter_str);
|
||||
if (!err) {
|
||||
/* System filters just show a default message */
|
||||
kfree(filter->filter_string);
|
||||
filter->filter_string = NULL;
|
||||
kfree((*filterp)->filter_string);
|
||||
(*filterp)->filter_string = NULL;
|
||||
} else {
|
||||
append_filter_err(pe, filter);
|
||||
append_filter_err(pe, *filterp);
|
||||
}
|
||||
}
|
||||
create_filter_finish(pe);
|
||||
|
||||
*filterp = filter;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
struct trace_event_call *call = file->event_call;
|
||||
struct event_filter *filter;
|
||||
struct event_filter *filter = NULL;
|
||||
int err;
|
||||
|
||||
if (!strcmp(strstrip(filter_string), "0")) {
|
||||
|
@ -1817,7 +1813,7 @@ int apply_subsystem_event_filter(struct trace_subsystem_dir *dir,
|
|||
{
|
||||
struct event_subsystem *system = dir->subsystem;
|
||||
struct trace_array *tr = dir->tr;
|
||||
struct event_filter *filter;
|
||||
struct event_filter *filter = NULL;
|
||||
int err = 0;
|
||||
|
||||
mutex_lock(&event_mutex);
|
||||
|
@ -2024,7 +2020,7 @@ int ftrace_profile_set_filter(struct perf_event *event, int event_id,
|
|||
char *filter_str)
|
||||
{
|
||||
int err;
|
||||
struct event_filter *filter;
|
||||
struct event_filter *filter = NULL;
|
||||
struct trace_event_call *call;
|
||||
|
||||
mutex_lock(&event_mutex);
|
||||
|
@ -2140,7 +2136,7 @@ static struct test_filter_data_t {
|
|||
#undef YES
|
||||
#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;
|
||||
|
||||
|
|
|
@ -446,7 +446,7 @@ static int create_trace_uprobe(int argc, char **argv)
|
|||
if (ret)
|
||||
goto fail_address_parse;
|
||||
|
||||
inode = igrab(d_inode(path.dentry));
|
||||
inode = igrab(d_real_inode(path.dentry));
|
||||
path_put(&path);
|
||||
|
||||
if (!inode || !S_ISREG(inode->i_mode)) {
|
||||
|
@ -602,24 +602,9 @@ static int probes_seq_show(struct seq_file *m, void *v)
|
|||
char c = is_ret_probe(tu) ? 'r' : 'p';
|
||||
int i;
|
||||
|
||||
seq_printf(m, "%c:%s/%s", c, tu->tp.call.class->system,
|
||||
trace_event_name(&tu->tp.call));
|
||||
seq_printf(m, " %s:", tu->filename);
|
||||
|
||||
/* 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;
|
||||
}
|
||||
}
|
||||
seq_printf(m, "%c:%s/%s %s:0x%0*lx", c, tu->tp.call.class->system,
|
||||
trace_event_name(&tu->tp.call), tu->filename,
|
||||
(int)(sizeof(void *) * 2), tu->offset);
|
||||
|
||||
for (i = 0; i < tu->tp.nr_args; i++)
|
||||
seq_printf(m, " %s=%s", tu->tp.args[i].name, tu->tp.args[i].comm);
|
||||
|
|
Loading…
Reference in New Issue