Probes fixes for v6.18-rc4
- tprobe-events: Fix to register tracepoint correctly tprobe-events missed to set tracepoint data structure before registering callback when enabling it. This sets it correctly. - tprobe-events: Fix to put tracepoint_user when disable the event. tprobe-events missed to unregister tracepoint callback when the event is disabled. This ensures to unregister it. -----BEGIN PGP SIGNATURE----- iQFPBAABCgA5FiEEh7BulGwFlgAOi5DV2/sHvwUrPxsFAmkNMDwbHG1hc2FtaS5o aXJhbWF0c3VAZ21haWwuY29tAAoJENv7B78FKz8bqMoH/i/hGqn3fM9y2MfoL7Fm bPaK6tuRjypbifRSTxmelBUE6cvKcW36JrfDnxTyCfUGP8ye5NXtexwojFMUZoOH DuU0g+uizywcgO2SknEiAIyh0QnoJyfj+vh/d9rcGUGai0Tf2gswPuVg3NHEq6Uq 3397uR3dBC8D0DY1qzEWyfqPGlfdNmh5i8cFaZoIlXa3Tk+RfMyJo4T66eshtdnf S7Lg33wiociPrSAssPlSXau9y5BEwfHY7uArKbLx6fI8D+fS6BqJMNUc6uYnWfOe UtiXw8NE+G5h5YtLh2ryAdnodHaiA+SQ6rZFFKg7mqIVNWJSSczvjwy501pD9UbE kVE= =K+uv -----END PGP SIGNATURE----- Merge tag 'probes-fixes-v6.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace Pull probe fixes from Masami Hiramatsu: - tprobe-events: Fix to register tracepoint correctly tprobe-events missed to set tracepoint data structure before registering callback when enabling it. This sets it correctly. - tprobe-events: Fix to put tracepoint_user when disable the event tprobe-events missed to unregister tracepoint callback when the event is disabled. This ensures to unregister it. * tag 'probes-fixes-v6.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: tracing: tprobe-events: Fix to put tracepoint_user when disable the tprobe tracing: tprobe-events: Fix to register tracepoint correctly
This commit is contained in:
commit
4a0c9b3391
|
|
@ -106,13 +106,14 @@ static struct tracepoint_user *__tracepoint_user_init(const char *name, struct t
|
||||||
if (!tuser->name)
|
if (!tuser->name)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
/* Register tracepoint if it is loaded. */
|
||||||
if (tpoint) {
|
if (tpoint) {
|
||||||
|
tuser->tpoint = tpoint;
|
||||||
ret = tracepoint_user_register(tuser);
|
ret = tracepoint_user_register(tuser);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
tuser->tpoint = tpoint;
|
|
||||||
tuser->refcount = 1;
|
tuser->refcount = 1;
|
||||||
INIT_LIST_HEAD(&tuser->list);
|
INIT_LIST_HEAD(&tuser->list);
|
||||||
list_add(&tuser->list, &tracepoint_user_list);
|
list_add(&tuser->list, &tracepoint_user_list);
|
||||||
|
|
@ -1513,6 +1514,10 @@ static int disable_trace_fprobe(struct trace_event_call *call,
|
||||||
if (!trace_probe_is_enabled(tp)) {
|
if (!trace_probe_is_enabled(tp)) {
|
||||||
list_for_each_entry(tf, trace_probe_probe_list(tp), tp.list) {
|
list_for_each_entry(tf, trace_probe_probe_list(tp), tp.list) {
|
||||||
unregister_fprobe(&tf->fp);
|
unregister_fprobe(&tf->fp);
|
||||||
|
if (tf->tuser) {
|
||||||
|
tracepoint_user_put(tf->tuser);
|
||||||
|
tf->tuser = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue