Commit dc8baa3c authored by Siddh Raman Pant's avatar Siddh Raman Pant Committed by Zheng Yejian
Browse files

Revert "tracing/trigger: Fix to return error if failed to alloc snapshot"

stable inclusion
from stable-v5.10.216
commit 26ebeffff238488466fa578be3b35b8a46e69906
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9HL6U
CVE: CVE-2024-26920

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=26ebeffff238488466fa578be3b35b8a46e69906



--------------------------------

This reverts commit 56cfbe60710772916a5ba092c99542332b48e870 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:
b8cc44a4 ("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: default avatarSiddh Raman Pant <siddh.raman.pant@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fixes: 4b28b68d ("tracing/trigger: Fix to return error if failed to alloc snapshot")
Signed-off-by: default avatarZheng Yejian <zhengyejian1@huawei.com>
parent e706c6b6
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -1140,10 +1140,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);
}