]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/sched/act_api.c
net_sched: hold netns refcnt for each action
[linux.git] / net / sched / act_api.c
index 8f2c635149561e741bda88163df063f8cc70f957..ca2ff0b3123f9d37e4b0549e55254bf46efb5e1a 100644 (file)
@@ -78,6 +78,7 @@ static void tcf_idr_remove(struct tcf_idrinfo *idrinfo, struct tc_action *p)
        spin_lock_bh(&idrinfo->lock);
        idr_remove_ext(&idrinfo->action_idr, p->tcfa_index);
        spin_unlock_bh(&idrinfo->lock);
+       put_net(idrinfo->net);
        gen_kill_estimator(&p->tcfa_rate_est);
        free_tcf(p);
 }
@@ -336,6 +337,7 @@ int tcf_idr_create(struct tc_action_net *tn, u32 index, struct nlattr *est,
        p->idrinfo = idrinfo;
        p->ops = ops;
        INIT_LIST_HEAD(&p->list);
+       get_net(idrinfo->net);
        *a = p;
        return 0;
 }