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

Commit 406089d0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'trace-3.8-rc3-regression-fix' of...

Merge tag 'trace-3.8-rc3-regression-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace

Pull tracing regression fixes from Steven Rostedt:
 "The clean up patch commit 0fb9656d "tracing: Make tracing_enabled
  be equal to tracing_on" caused two regressions.

   1) The irqs off latency tracer no longer starts if tracing_on is off
      when the tracer is set, and then tracing_on is enabled.  The
      tracing_on file needs the hook that tracing_enabled had to enable
      tracers if they request it (call the tracer's start() method).

   2) That commit had a separate change that really should have been a
      separate patch, but it must have been added accidently with the -a
      option of git commit.  But as the change is still related to the
      commit it wasn't noticed in review.  That change, changed the way
      blocking is done by the trace_pipe file with respect to the
      tracing_on settings.  I've been told that this change breaks
      current userspace, and this specific change is being reverted."

* tag 'trace-3.8-rc3-regression-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  tracing: Fix regression of trace_pipe
  tracing: Fix regression with irqsoff tracer and tracing_on file
parents 7dea1ff3 250bfd3d
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -3454,7 +3454,7 @@ static int tracing_wait_pipe(struct file *filp)
			return -EINTR;

		/*
		 * We block until we read something and tracing is enabled.
		 * We block until we read something and tracing is disabled.
		 * We still block if tracing is disabled, but we have never
		 * read anything. This allows a user to cat this file, and
		 * then enable tracing. But after we have read something,
@@ -3462,7 +3462,7 @@ static int tracing_wait_pipe(struct file *filp)
		 *
		 * iter->pos will be 0 if we haven't read anything.
		 */
		if (tracing_is_enabled() && iter->pos)
		if (!tracing_is_enabled() && iter->pos)
			break;
	}

@@ -4817,10 +4817,17 @@ rb_simple_write(struct file *filp, const char __user *ubuf,
		return ret;

	if (buffer) {
		if (val)
		mutex_lock(&trace_types_lock);
		if (val) {
			ring_buffer_record_on(buffer);
		else
			if (current_trace->start)
				current_trace->start(tr);
		} else {
			ring_buffer_record_off(buffer);
			if (current_trace->stop)
				current_trace->stop(tr);
		}
		mutex_unlock(&trace_types_lock);
	}

	(*ppos)++;