Skip to contentSkip to conversation

FAILED: patch "[PATCH] tracing: Check keys for variable references in expressions" failed to apply to 4.19-stable tree

PATCH [email protected] 1 participant 1 message May 27, 2019

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From c8d94a1878342fdffedaaf15201d951dfc147065 Mon Sep 17 00:00:00 2001
From: Tom Zanussi <[email protected]>
Date: Thu, 18 Apr 2019 10:18:51 -0500
Subject: [PATCH] tracing: Check keys for variable references in expressions
too

There's an existing check for variable references in keys, but it doesn't go far enough. It checks whether a key field is a variable reference but doesn't check whether it's an expression containing variable references, which can cause the same problems for callers.

Use the existing field_has_hist_vars() function rather than a direct top-level flag check to catch all possible variable references.

Fixes 067fe038e70f6 ("tracing: Add variable reference handling to hist triggers")
kernel/trace/trace_events_hist.c +2 -2
index 06e7b9f66de6..2b76f9520bd0 100644
@@ -59,7 +59,7 @@
 	C(NO_CLOSING_PAREN,	"No closing paren found"),		\
 	C(SUBSYS_NOT_FOUND,	"Missing subsystem"),			\
 	C(INVALID_SUBSYS_EVENT,	"Invalid subsystem or event name"),	\
-	C(INVALID_REF_KEY,	"Using variable references as keys not supported"), \
+	C(INVALID_REF_KEY,	"Using variable references in keys not supported"), \
 	C(VAR_NOT_FOUND,	"Couldn't find variable"),		\
 	C(FIELD_NOT_FOUND,	"Couldn't find field"),
 
@@ -4506,7 +4506,7 @@ static int create_key_field(struct hist_trigger_data *hist_data,
 			goto out;
 		}
 
-		if (hist_field->flags & HIST_FIELD_FL_VAR_REF) {
+		if (field_has_hist_vars(hist_field, 0))	{
 			hist_err(tr, HIST_ERR_INVALID_REF_KEY, errpos(field_str));
 			destroy_hist_field(hist_field, 0);
 			ret = -EINVAL;