net_sched: copy exts->type in tcf_exts_change()
authorWANG Cong <xiyou.wangcong@gmail.com>
Tue, 7 Oct 2014 00:21:54 +0000 (17:21 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Oct 2014 19:41:27 +0000 (15:41 -0400)
We need to copy exts->type when committing the change, otherwise
it would be always 0. This is a quick fix for -net and -stable,
for net-next tcf_exts will be removed.

Fixes: commit 33be627159913b094bb578e83 ("net_sched: act: use standard struct list_head")
Reported-by: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_api.c

index c28b0d327b124b8b478680293f145214caa6f835..4f4e08b0e2b70be52f9a38d4449902176a233a64 100644 (file)
@@ -549,6 +549,7 @@ void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst,
        tcf_tree_lock(tp);
        list_splice_init(&dst->actions, &tmp);
        list_splice(&src->actions, &dst->actions);
+       dst->type = src->type;
        tcf_tree_unlock(tp);
        tcf_action_destroy(&tmp, TCA_ACT_UNBIND);
 #endif