diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index b6e9f7ad1d500541472375c17e5641c65c802ccd..5ea54e768b0a749cc4ef25f96edb1521228d4bdb 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6496,7 +6496,9 @@ rb_simple_write(struct file *filp, const char __user *ubuf,
 
 	if (buffer) {
 		mutex_lock(&trace_types_lock);
-		if (val) {
+		if (!!val == tracer_tracing_is_on(tr)) {
+			val = 0; /* do nothing */
+		} else if (val) {
 			tracer_tracing_on(tr);
 			if (tr->current_trace->start)
 				tr->current_trace->start(tr);