|
@@ -208,11 +208,12 @@ static void tunnel_key_release(struct tc_action *a)
|
|
struct tcf_tunnel_key_params *params;
|
|
struct tcf_tunnel_key_params *params;
|
|
|
|
|
|
params = rcu_dereference_protected(t->params, 1);
|
|
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,
|
|
static int tunnel_key_dump_addresses(struct sk_buff *skb,
|