On Mon, Jun 26, 2017 at 12:02 PM, Joel Fernandes <joe...@google.com> wrote: > On Mon, Jun 26, 2017 at 9:52 AM, Steven Rostedt <rost...@goodmis.org> wrote: >> On Sun, 25 Jun 2017 22:38:42 -0700 [..] >> >>> +{ >>> + struct trace_event_file *file; >>> + struct trace_array *tr; >>> + >>> + mutex_lock(&event_mutex); >>> + do_for_each_event_file(tr, file) { >>> + if (!(file->flags & EVENT_FILE_FL_ENABLED)) >>> + continue; >>> + >>> + if (enable) { >>> + tracing_start_tgid_record(); >> >> If we fail to start, the bit should not be set, and we should return >> failure. Note, it can only fail on the first try, as once it is >> allocated, you don't need to worry about it failing. Thus, if it fails, >> break out of the loop now and return failure. >> > > That seems Ok with me to do, I think a valid point. > > I think that I should do it in the second call to > tracing_start_tgid_record too then (__ftrace_event_enable_disable) to > error out if the allocation fails. > > While going this code I again, I noticed another potential issue in > __ftrace_event_enable_disable
Sorry I hit send too soon! I was saying, While going through this code again I noticed another potential issue in __ftrace_event_enable_disable in existing code: Here we do: ret = call->class->reg(call, TRACE_REG_REGISTER, file); But in the error handling path we only do a tracing_stop_cmdline_record() and not clear the EVENT_FILE_FL_RECORDED_CMD_BIT flag. Is that not an issue? I am guessing because enabling of the event itself will fail, that's Ok. But just to keep it consistent, I am thinking if we should just clear the bit here. Thanks, Joel