Revert "tracing/trigger: Fix to return error if failed to alloc snapshot"
authorSiddh Raman Pant <siddh.raman.pant@oracle.com>
Thu, 18 Apr 2024 13:28:06 +0000 (18:58 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 27 Apr 2024 15:05:23 +0000 (17:05 +0200)
This reverts commit b5085b5ac1d96ea2a8a6240f869655176ce44197 which is
commit 0958b33ef5a04ed91f61cef4760ac412080c4e08 upstream.

The change has an incorrect assumption about the return value because
in the current stable trees for versions 5.15 and before, the following
commit responsible for making 0 a success value is not present:
b8cc44a4d3c1 ("tracing: Remove logic for registering multiple event triggers at a time")

The return value should be 0 on failure in the current tree, because in
the functions event_trigger_callback() and event_enable_trigger_func(),
we have:

ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file);
/*
 * The above returns on success the # of functions enabled,
 * but if it didn't find any functions it returns zero.
 * Consider no functions a failure too.
 */
if (!ret) {
ret = -ENOENT;

Cc: stable@kernel.org # 5.15, 5.10, 5.4, 4.19
Signed-off-by: Siddh Raman Pant <siddh.raman.pant@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/trace/trace_events_trigger.c

index dfdbcf1da216eb6c64f7ac5936515c56a63e2883..106f9813841a156948fe3bbf045bdbe54dea5c66 100644 (file)
@@ -1161,10 +1161,8 @@ register_snapshot_trigger(char *glob, struct event_trigger_ops *ops,
                          struct event_trigger_data *data,
                          struct trace_event_file *file)
 {
-       int ret = tracing_alloc_snapshot_instance(file->tr);
-
-       if (ret < 0)
-               return ret;
+       if (tracing_alloc_snapshot_instance(file->tr) != 0)
+               return 0;
 
        return register_trigger(glob, ops, data, file);
 }