net: sched: cls_fw: add missing tcf_exts_init call in fw_change()
authorJohn Fastabend <john.fastabend@gmail.com>
Tue, 16 Sep 2014 06:31:42 +0000 (23:31 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Sep 2014 19:59:36 +0000 (15:59 -0400)
When allocating a new structure we also need to call tcf_exts_init
to initialize exts.

A follow up patch might be in order to remove some of this code
and do tcf_exts_assign(). With this we could remove the
tcf_exts_init/tcf_exts_change pattern for some of the classifiers.
As part of the future tcf_actions RCU series this will need to be
done. For now fix the call here.

Fixes e35a8ee5993ba81fd6c0 ("net: sched: fw use RCU")
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Acked-by: Cong Wang <cwang@twopensource.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_fw.c

index 006b45a67fdd4880f8e33574bb87cd122bfac718..2650285620ee8d583dadeb8911332ab245f5bed1 100644 (file)
@@ -264,6 +264,8 @@ static int fw_change(struct net *net, struct sk_buff *in_skb,
 #endif /* CONFIG_NET_CLS_IND */
                fnew->tp = f->tp;
 
+               tcf_exts_init(&fnew->exts, TCA_FW_ACT, TCA_FW_POLICE);
+
                err = fw_change_attrs(net, tp, fnew, tb, tca, base, ovr);
                if (err < 0) {
                        kfree(fnew);