diff --git a/kernel/trace/trace_remote.c b/kernel/trace/trace_remote.c
index 317ba3124343..a677b093fa07 100644
--- a/kernel/trace/trace_remote.c
+++ b/kernel/trace/trace_remote.c
@@ -136,7 +136,7 @@ static int trace_remote_enable_tracing(struct trace_remote *remote)
return ret;
}
- remote->tracing_on = true;
+ WRITE_ONCE(remote->tracing_on, true);
return 0;
}
@@ -155,7 +155,7 @@ static int trace_remote_disable_tracing(struct trace_remote *remote)
return ret;
ring_buffer_poll_remote(remote->trace_buffer, RING_BUFFER_ALL_CPUS);
- remote->tracing_on = false;
+ WRITE_ONCE(remote->tracing_on, false);
trace_remote_try_unload(remote);
return 0;
@@ -250,11 +250,12 @@ tracing_on_write(struct file *filp, const char __user *ubuf, size_t cnt, loff_t
return cnt;
}
+
static int tracing_on_show(struct seq_file *s, void *unused)
{
struct trace_remote *remote = s->private;
- seq_printf(s, "%d\n", remote->tracing_on);
+ seq_printf(s, "%d\n", READ_ONCE(remote->tracing_on));
return 0;
}@@ -281,7 +282,7 @@ static ssize_t buffer_size_kb_write(struct file *filp, const char __user *ubuf,
if (trace_remote_loaded(remote))
return -EBUSY;
- remote->trace_buffer_size = val;
+ WRITE_ONCE(remote->trace_buffer_size, val);
return cnt;
}
@@ -290,7 +291,7 @@ static int buffer_size_kb_show(struct seq_file *s, void *unused)
{
struct trace_remote *remote = s->private;
- seq_printf(s, "%lu (%s)\n", remote->trace_buffer_size >> 10,
+ seq_printf(s, "%lu (%s)\n", READ_ONCE(remote->trace_buffer_size) >> 10,
trace_remote_loaded(remote) ? "loaded" : "unloaded");
return 0;@@ -1131,7 +1132,7 @@ trace_remote_enable_event(struct trace_remote *remote, struct remote_event *evt,
if (ret)
return ret;
- evt->enabled = enable;
+ WRITE_ONCE(evt->enabled, enable);
return 0;
}
@@ -1140,7 +1141,7 @@ static int remote_event_enable_show(struct seq_file *s, void *unused)
{
struct remote_event *evt = s->private;
- seq_printf(s, "%d\n", evt->enabled);
+ seq_printf(s, "%d\n", READ_ONCE(evt->enabled));
return 0;
}--
2.56.0.455.g6c5a503b38-goog