diff options
Diffstat (limited to 'kernel/trace')
-rw-r--r-- | kernel/trace/trace_events_filter.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index fdc6d22d406b..f04cc3136bd3 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c | |||
@@ -1697,7 +1697,7 @@ static int replace_system_preds(struct event_subsystem *system, | |||
1697 | * replace the filter for the call. | 1697 | * replace the filter for the call. |
1698 | */ | 1698 | */ |
1699 | filter = call->filter; | 1699 | filter = call->filter; |
1700 | call->filter = filter_item->filter; | 1700 | rcu_assign_pointer(call->filter, filter_item->filter); |
1701 | filter_item->filter = filter; | 1701 | filter_item->filter = filter; |
1702 | 1702 | ||
1703 | fail = false; | 1703 | fail = false; |
@@ -1752,7 +1752,7 @@ int apply_event_filter(struct ftrace_event_call *call, char *filter_string) | |||
1752 | filter = call->filter; | 1752 | filter = call->filter; |
1753 | if (!filter) | 1753 | if (!filter) |
1754 | goto out_unlock; | 1754 | goto out_unlock; |
1755 | call->filter = NULL; | 1755 | RCU_INIT_POINTER(call->filter, NULL); |
1756 | /* Make sure the filter is not being used */ | 1756 | /* Make sure the filter is not being used */ |
1757 | synchronize_sched(); | 1757 | synchronize_sched(); |
1758 | __free_filter(filter); | 1758 | __free_filter(filter); |
@@ -1793,7 +1793,7 @@ out: | |||
1793 | * string | 1793 | * string |
1794 | */ | 1794 | */ |
1795 | tmp = call->filter; | 1795 | tmp = call->filter; |
1796 | call->filter = filter; | 1796 | rcu_assign_pointer(call->filter, filter); |
1797 | if (tmp) { | 1797 | if (tmp) { |
1798 | /* Make sure the call is done with the filter */ | 1798 | /* Make sure the call is done with the filter */ |
1799 | synchronize_sched(); | 1799 | synchronize_sched(); |