diff options
Diffstat (limited to 'kernel/trace/trace_output.c')
| -rw-r--r-- | kernel/trace/trace_output.c | 25 | 
1 files changed, 12 insertions, 13 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 8aa493d25c73..67f47ea27921 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -692,7 +692,7 @@ static LIST_HEAD(ftrace_event_list);  static int trace_search_list(struct list_head **list)  { -	struct trace_event *e; +	struct trace_event *e = NULL, *iter;  	int next = __TRACE_LAST_TYPE;  	if (list_empty(&ftrace_event_list)) { @@ -704,9 +704,11 @@ static int trace_search_list(struct list_head **list)  	 * We used up all possible max events,  	 * lets see if somebody freed one.  	 */ -	list_for_each_entry(e, &ftrace_event_list, list) { -		if (e->type != next) +	list_for_each_entry(iter, &ftrace_event_list, list) { +		if (iter->type != next) { +			e = iter;  			break; +		}  		next++;  	} @@ -714,7 +716,10 @@ static int trace_search_list(struct list_head **list)  	if (next > TRACE_EVENT_TYPE_MAX)  		return 0; -	*list = &e->list; +	if (e) +		*list = &e->list; +	else +		*list = &ftrace_event_list;  	return next;  } @@ -778,9 +783,8 @@ int register_trace_event(struct trace_event *event)  		list_add_tail(&event->list, list); -	} else if (event->type > __TRACE_LAST_TYPE) { -		printk(KERN_WARNING "Need to add type to trace.h\n"); -		WARN_ON(1); +	} else if (WARN(event->type > __TRACE_LAST_TYPE, +			"Need to add type to trace.h")) {  		goto out;  	} else {  		/* Is this event already used */ @@ -1571,13 +1575,8 @@ __init static int init_events(void)  	for (i = 0; events[i]; i++) {  		event = events[i]; -  		ret = register_trace_event(event); -		if (!ret) { -			printk(KERN_WARNING "event %d failed to register\n", -			       event->type); -			WARN_ON_ONCE(1); -		} +		WARN_ONCE(!ret, "event %d failed to register", event->type);  	}  	return 0;  | 
