diff options
| -rw-r--r-- | net/sched/act_tunnel_key.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/net/sched/act_tunnel_key.c b/net/sched/act_tunnel_key.c index fea772e66e62..1281ca463727 100644 --- a/net/sched/act_tunnel_key.c +++ b/net/sched/act_tunnel_key.c @@ -208,11 +208,12 @@ static void tunnel_key_release(struct tc_action *a)  	struct tcf_tunnel_key_params *params;  	params = rcu_dereference_protected(t->params, 1); +	if (params) { +		if (params->tcft_action == TCA_TUNNEL_KEY_ACT_SET) +			dst_release(¶ms->tcft_enc_metadata->dst); -	if (params->tcft_action == TCA_TUNNEL_KEY_ACT_SET) -		dst_release(¶ms->tcft_enc_metadata->dst); - -	kfree_rcu(params, rcu); +		kfree_rcu(params, rcu); +	}  }  static int tunnel_key_dump_addresses(struct sk_buff *skb, | 
