Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 091c0f86 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  ftrace: Fix hash record accounting bug
  perf: Fix parsing of __print_flags() in TP_printk()
  jump_label: jump_label_inc may return before the code is patched
  ftrace: Remove force undef config value left for testing
  tracing: Restore system filter behavior
  tracing: fix event_subsystem ref counting
parents 4fb1db33 ddf6e0e5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -172,6 +172,7 @@ enum {
	TRACE_EVENT_FL_FILTERED_BIT,
	TRACE_EVENT_FL_RECORDED_CMD_BIT,
	TRACE_EVENT_FL_CAP_ANY_BIT,
	TRACE_EVENT_FL_NO_SET_FILTER_BIT,
};

enum {
@@ -179,6 +180,7 @@ enum {
	TRACE_EVENT_FL_FILTERED		= (1 << TRACE_EVENT_FL_FILTERED_BIT),
	TRACE_EVENT_FL_RECORDED_CMD	= (1 << TRACE_EVENT_FL_RECORDED_CMD_BIT),
	TRACE_EVENT_FL_CAP_ANY		= (1 << TRACE_EVENT_FL_CAP_ANY_BIT),
	TRACE_EVENT_FL_NO_SET_FILTER	= (1 << TRACE_EVENT_FL_NO_SET_FILTER_BIT),
};

struct ftrace_event_call {
+2 −1
Original line number Diff line number Diff line
@@ -66,8 +66,9 @@ void jump_label_inc(struct jump_label_key *key)
		return;

	jump_label_lock();
	if (atomic_add_return(1, &key->enabled) == 1)
	if (atomic_read(&key->enabled) == 0)
		jump_label_update(key, JUMP_LABEL_ENABLE);
	atomic_inc(&key->enabled);
	jump_label_unlock();
}

+3 −2
Original line number Diff line number Diff line
@@ -152,7 +152,6 @@ void clear_ftrace_function(void)
	ftrace_pid_function = ftrace_stub;
}

#undef CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST
#ifndef CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST
/*
 * For those archs that do not test ftrace_trace_stop in their
@@ -1212,7 +1211,9 @@ ftrace_hash_move(struct ftrace_ops *ops, int enable,
	if (!src->count) {
		free_ftrace_hash_rcu(*dst);
		rcu_assign_pointer(*dst, EMPTY_HASH);
		return 0;
		/* still need to update the function records */
		ret = 0;
		goto out;
	}

	/*
+0 −1
Original line number Diff line number Diff line
@@ -1078,7 +1078,6 @@ event_subsystem_dir(const char *name, struct dentry *d_events)
	/* First see if we did not already create this dir */
	list_for_each_entry(system, &event_subsystems, list) {
		if (strcmp(system->name, name) == 0) {
			__get_system(system);
			system->nr_events++;
			return system->entry;
		}
+6 −1
Original line number Diff line number Diff line
@@ -1649,7 +1649,9 @@ static int replace_system_preds(struct event_subsystem *system,
		 */
		err = replace_preds(call, NULL, ps, filter_string, true);
		if (err)
			goto fail;
			call->flags |= TRACE_EVENT_FL_NO_SET_FILTER;
		else
			call->flags &= ~TRACE_EVENT_FL_NO_SET_FILTER;
	}

	list_for_each_entry(call, &ftrace_events, list) {
@@ -1658,6 +1660,9 @@ static int replace_system_preds(struct event_subsystem *system,
		if (strcmp(call->class->system, system->name) != 0)
			continue;

		if (call->flags & TRACE_EVENT_FL_NO_SET_FILTER)
			continue;

		filter_item = kzalloc(sizeof(*filter_item), GFP_KERNEL);
		if (!filter_item)
			goto fail_mem;
Loading