diff options
Diffstat (limited to 'net/sched/cls_api.c')
| -rw-r--r-- | net/sched/cls_api.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 13341e7fb077..340d5af86e87 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -646,7 +646,7 @@ static void tc_block_indr_cleanup(struct flow_block_cb *block_cb)  	struct net_device *dev = block_cb->indr.dev;  	struct Qdisc *sch = block_cb->indr.sch;  	struct netlink_ext_ack extack = {}; -	struct flow_block_offload bo; +	struct flow_block_offload bo = {};  	tcf_block_offload_init(&bo, dev, sch, FLOW_BLOCK_UNBIND,  			       block_cb->indr.binder_type, @@ -3040,6 +3040,7 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb,  {  #ifdef CONFIG_NET_CLS_ACT  	{ +		int init_res[TCA_ACT_MAX_PRIO] = {};  		struct tc_action *act;  		size_t attr_size = 0; @@ -3051,12 +3052,11 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb,  				return PTR_ERR(a_o);  			act = tcf_action_init_1(net, tp, tb[exts->police],  						rate_tlv, "police", ovr, -						TCA_ACT_BIND, a_o, rtnl_held, -						extack); -			if (IS_ERR(act)) { -				module_put(a_o->owner); +						TCA_ACT_BIND, a_o, init_res, +						rtnl_held, extack); +			module_put(a_o->owner); +			if (IS_ERR(act))  				return PTR_ERR(act); -			}  			act->type = exts->type = TCA_OLD_COMPAT;  			exts->actions[0] = act; @@ -3067,8 +3067,8 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb,  			err = tcf_action_init(net, tp, tb[exts->action],  					      rate_tlv, NULL, ovr, TCA_ACT_BIND, -					      exts->actions, &attr_size, -					      rtnl_held, extack); +					      exts->actions, init_res, +					      &attr_size, rtnl_held, extack);  			if (err < 0)  				return err;  			exts->nr_actions = err;  | 
