|
@@ -1686,7 +1686,7 @@ static int replace_system_preds(struct event_subsystem *system,
|
|
|
* replace the filter for the call.
|
|
|
*/
|
|
|
filter = call->filter;
|
|
|
- call->filter = filter_item->filter;
|
|
|
+ rcu_assign_pointer(call->filter, filter_item->filter);
|
|
|
filter_item->filter = filter;
|
|
|
|
|
|
fail = false;
|
|
@@ -1741,7 +1741,7 @@ int apply_event_filter(struct ftrace_event_call *call, char *filter_string)
|
|
|
filter = call->filter;
|
|
|
if (!filter)
|
|
|
goto out_unlock;
|
|
|
- call->filter = NULL;
|
|
|
+ RCU_INIT_POINTER(call->filter, NULL);
|
|
|
/* Make sure the filter is not being used */
|
|
|
synchronize_sched();
|
|
|
__free_filter(filter);
|
|
@@ -1782,7 +1782,7 @@ out:
|
|
|
* string
|
|
|
*/
|
|
|
tmp = call->filter;
|
|
|
- call->filter = filter;
|
|
|
+ rcu_assign_pointer(call->filter, filter);
|
|
|
if (tmp) {
|
|
|
/* Make sure the call is done with the filter */
|
|
|
synchronize_sched();
|