diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c index 107c6d83dc5c..9068dfa02824 100644 --- a/net/sched/act_ife.c +++ b/net/sched/act_ife.c @@ -644,12 +644,14 @@ static int tcf_ife_dump(struct sk_buff *skb, struct tc_action *a, int bind, unsigned char *b = skb_tail_pointer(skb); struct tcf_ife_info *ife = to_ife(a); struct tcf_ife_params *p; - struct tc_ife opt = { - .index = ife->tcf_index, - .refcnt = refcount_read(&ife->tcf_refcnt) - ref, - .bindcnt = atomic_read(&ife->tcf_bindcnt) - bind, - }; + struct tc_ife opt; struct tcf_t t; + memset(&opt, 0, sizeof(opt)); + memset(&t, 0, sizeof(t)); + + opt.index = ife->tcf_index, + opt.refcnt = refcount_read(&ife->tcf_refcnt) - ref, + opt.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind, spin_lock_bh(&ife->tcf_lock); opt.action = ife->tcf_action;