|
@@ -957,12 +957,12 @@ static int __trace_add_event_call(struct ftrace_event_call *call)
|
|
|
if (!d_events)
|
|
|
return -ENOENT;
|
|
|
|
|
|
- list_add(&call->list, &ftrace_events);
|
|
|
ret = event_create_dir(call, d_events, &ftrace_event_id_fops,
|
|
|
&ftrace_enable_fops, &ftrace_event_filter_fops,
|
|
|
&ftrace_event_format_fops);
|
|
|
- if (ret < 0)
|
|
|
- list_del(&call->list);
|
|
|
+ if (!ret)
|
|
|
+ list_add(&call->list, &ftrace_events);
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1124,10 +1124,11 @@ static void trace_module_add_events(struct module *mod)
|
|
|
return;
|
|
|
}
|
|
|
call->mod = mod;
|
|
|
- list_add(&call->list, &ftrace_events);
|
|
|
- event_create_dir(call, d_events,
|
|
|
- &file_ops->id, &file_ops->enable,
|
|
|
- &file_ops->filter, &file_ops->format);
|
|
|
+ ret = event_create_dir(call, d_events,
|
|
|
+ &file_ops->id, &file_ops->enable,
|
|
|
+ &file_ops->filter, &file_ops->format);
|
|
|
+ if (!ret)
|
|
|
+ list_add(&call->list, &ftrace_events);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1267,10 +1268,12 @@ static __init int event_trace_init(void)
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
- list_add(&call->list, &ftrace_events);
|
|
|
- event_create_dir(call, d_events, &ftrace_event_id_fops,
|
|
|
- &ftrace_enable_fops, &ftrace_event_filter_fops,
|
|
|
- &ftrace_event_format_fops);
|
|
|
+ ret = event_create_dir(call, d_events, &ftrace_event_id_fops,
|
|
|
+ &ftrace_enable_fops,
|
|
|
+ &ftrace_event_filter_fops,
|
|
|
+ &ftrace_event_format_fops);
|
|
|
+ if (!ret)
|
|
|
+ list_add(&call->list, &ftrace_events);
|
|
|
}
|
|
|
|
|
|
while (true) {
|