lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 4 Apr 2009 11:49:30 -0400 (EDT)
From:	Steven Rostedt <rostedt@...dmis.org>
To:	Tom Zanussi <tzanussi@...il.com>
cc:	Ingo Molnar <mingo@...e.hu>,
	"Paul E. McKenney" <paulmck@...ibm.com>,
	linux-kernel <linux-kernel@...r.kernel.org>, fweisbec@...il.com
Subject: Re: [PATCH] tracing/filters: allow event filters to be set only when
 not tracing


On Sat, 4 Apr 2009, Tom Zanussi wrote:
> 
> Hmm, after reading Paul's replies, it sounds like this approach might be
> more trouble than it's worth.  Maybe going back to the idea of
> temporarily stopping/starting tracing would be a better idea, but with a
> little more heavyweight version of the current 'quick' tracing
> start/stop (that would prevent entering the tracing functions (and ththe
> filter_check_discard()).


Actually, I forgot what the general problem we are avoiding here with the
RCU locks. Could you explain that again. Just so that I can get a better
idea without having to read between the lines of the previous messages in 
this thread.


> 
> I was thinking it would be something like:
> 
> stop_tracing();
> current_tracer->stop(); /* unregister tracepoints, etc */
> 
> remove filter
> 
> current_tracer->start(); /* reregister tracepoints, etc */
> start_tracing();

This use to be the way start and stop worked, but I'm trying to
make them more light weight. I've been wanting start/stop to be called
by start_tracing() and stop_tracing() and those should be able to be 
called in any context. But registering and unregistering tracepoints calls 
mutexes, which can not be done in atomic context.

There are still some tracers that have start/stop using sleeping code, but 
in the long run I want the tracers start/stop functions to be light.


> 
> The struct tracer comments suggest that the stop()/start()
> ops are meant for pausing, I'd guess for things like this, but some of
> the tracers don't implement them.

Yeah, They should, but leaving out the start/stop functions, is just
the tracers way of saying, I don't need to pause. :-/

> 
> For the events in the event tracer, it would be something like:
> 
> stop_tracing();
> call->unregfunc(); /* unregister tracepoint */
> 
> remove filter
> 
> call->regfunc(); /* reregister tracepoint */
> start_tracing();
> 
> If that makes sense, I can try it that way instead.
> 

I'll comment about this if I get that explanation of the problem again ;-)

-- Steve

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ