diff --git a/net/sched/ematch.c b/net/sched/ematch.c
index d0140a92694a4e6185ff80bdd00ef75b7267872c..dd3b8c11a2e0d4808a767041378604f494f4a9af 100644
--- a/net/sched/ematch.c
+++ b/net/sched/ematch.c
@@ -238,6 +238,9 @@ static int tcf_em_validate(struct tcf_proto *tp,
 			goto errout;
 
 		if (em->ops->change) {
+			err = -EINVAL;
+			if (em_hdr->flags & TCF_EM_SIMPLE)
+				goto errout;
 			err = em->ops->change(net, data, data_len, em);
 			if (err < 0)
 				goto errout;