diff options
Diffstat (limited to 'net/sched/act_mirred.c')
-rw-r--r-- | net/sched/act_mirred.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 3edeecafba2f..0f00eb96af84 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c @@ -33,22 +33,12 @@ static LIST_HEAD(mirred_list); static struct tcf_hashinfo mirred_hash_info; -static int tcf_mirred_release(struct tc_action *a, int bind) +static void tcf_mirred_release(struct tc_action *a, int bind) { struct tcf_mirred *m = to_mirred(a); - if (m) { - if (bind) - m->tcf_bindcnt--; - m->tcf_refcnt--; - if (!m->tcf_bindcnt && m->tcf_refcnt <= 0) { - list_del(&m->tcfm_list); - if (m->tcfm_dev) - dev_put(m->tcfm_dev); - tcf_hash_destroy(a); - return 1; - } - } - return 0; + list_del(&m->tcfm_list); + if (m->tcfm_dev) + dev_put(m->tcfm_dev); } static const struct nla_policy mirred_policy[TCA_MIRRED_MAX + 1] = { @@ -110,7 +100,7 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla, ret = ACT_P_CREATED; } else { if (!ovr) { - tcf_mirred_release(a, bind); + tcf_hash_release(a, bind); return -EEXIST; } } |