Re: [PATCH] tracing/filters: allow on-the-fly filter switching

From: Tom Zanussi
Date: Wed Apr 15 2009 - 00:32:40 EST


On Tue, 2009-04-14 at 22:56 +0200, Frederic Weisbecker wrote:
> On Mon, Apr 13, 2009 at 03:17:50AM -0500, Tom Zanussi wrote:

[...]

>
>
> BTW, this issue might be already present before this patch.
> What happens if:
>
>
> T1 T2
>
> event_filter_read() {
> filter_print_preds() {
> for (i = 0; i < n_preds; i++) {
> pred = preds[i];
> event_filter_write() {
> filter_disable_preds();
> filter_clear_preds() {
> kfree(pred->field_name);
> field_name = pred->field_name;
> // CRASH!!!
>
>
> You need a mutex to protect these two callbacks.
> It would also protect concurrent calls to event_filter_write(),
> which would result in random.
>

Yeah, Li Zefan had already fixed this, but it wasn't included in this
patch. Looks like he'll be resubmitting that part...

>
>

[...]

> Also, is filter_add_pred() supposed to be available for in-kernel
> uses by other tracers or something?

No, the current callers were the only ones I'd planned on (it's not
static because code in trace_events.c needs to call it). But, do you
see a use for it by other tracers?

> If this is planned, the locking could be even deeper than my comments.
>
> Other than these comments:
>
> Acked-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
>
> Thanks!
>

Thanks for reviewing it!

Tom

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