cls_bpf: further limit exec opcodes subset
authorDaniel Borkmann <daniel@iogearbox.net>
Wed, 23 Sep 2015 19:56:48 +0000 (21:56 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Sep 2015 21:29:02 +0000 (14:29 -0700)
Jamal suggested to further limit the currently allowed subset of opcodes
that may be used by a direct action return code as the intention is not
to replace the full action engine, but rather to have a minimal set that
can be used in the fast-path on things like ingress for some features
that cls_bpf supports.

Classifiers can, of course, still be chained together that have direct
action mode with those that have a full exec pass. For more complex
scenarios that go beyond this minimal set here, the full tcf_exts_exec()
path must be used.

Suggested-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_bpf.c

index d6c0a0b..7eeffaf 100644 (file)
@@ -65,11 +65,8 @@ static int cls_bpf_exec_opcode(int code)
 {
        switch (code) {
        case TC_ACT_OK:
-       case TC_ACT_RECLASSIFY:
        case TC_ACT_SHOT:
-       case TC_ACT_PIPE:
        case TC_ACT_STOLEN:
-       case TC_ACT_QUEUED:
        case TC_ACT_REDIRECT:
        case TC_ACT_UNSPEC:
                return code;