runtime = zmalloc(runtime_alloc_len);
if (!runtime) {
ret = -ENOMEM;
- goto link_error;
+ goto alloc_error;
}
runtime->p.bc = filter_bytecode;
runtime->len = filter_bytecode->bc.reloc_offset;
goto link_error;
}
runtime->p.filter = lttng_filter_interpret_bytecode;
+ runtime->p.link_failed = 0;
cds_list_add_rcu(&runtime->p.node, insert_loc);
dbg_printf("Linking successful.\n");
return 0;
link_error:
runtime->p.filter = lttng_filter_false;
+ runtime->p.link_failed = 1;
cds_list_add_rcu(&runtime->p.node, insert_loc);
+alloc_error:
dbg_printf("Linking failed.\n");
return ret;
}
{
struct lttng_ust_filter_bytecode_node *bc = runtime->bc;
- if (bc->enabler->enabled)
- runtime->filter = lttng_filter_interpret_bytecode;
- else
+ if (!bc->enabler->enabled || runtime->link_failed)
runtime->filter = lttng_filter_false;
+ else
+ runtime->filter = lttng_filter_interpret_bytecode;
}
/*