Lines Matching refs:idrinfo

143 	struct tcf_idrinfo *idrinfo = p->idrinfo;  in __tcf_action_put()  local
145 if (refcount_dec_and_mutex_lock(&p->tcfa_refcnt, &idrinfo->lock)) { in __tcf_action_put()
148 idr_remove(&idrinfo->action_idr, p->tcfa_index); in __tcf_action_put()
149 mutex_unlock(&idrinfo->lock); in __tcf_action_put()
275 static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_dump_walker() argument
282 struct idr *idr = &idrinfo->action_idr; in tcf_dump_walker()
287 mutex_lock(&idrinfo->lock); in tcf_dump_walker()
326 mutex_unlock(&idrinfo->lock); in tcf_dump_walker()
344 idr_remove(&p->idrinfo->action_idr, p->tcfa_index); in tcf_idr_release_unsafe()
352 static int tcf_del_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_del_walker() argument
358 struct idr *idr = &idrinfo->action_idr; in tcf_del_walker()
369 mutex_lock(&idrinfo->lock); in tcf_del_walker()
378 mutex_unlock(&idrinfo->lock); in tcf_del_walker()
382 mutex_unlock(&idrinfo->lock); in tcf_del_walker()
400 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_generic_walker() local
403 return tcf_del_walker(idrinfo, skb, ops); in tcf_generic_walker()
405 return tcf_dump_walker(idrinfo, skb, cb); in tcf_generic_walker()
416 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_search() local
419 mutex_lock(&idrinfo->lock); in tcf_idr_search()
420 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_search()
425 mutex_unlock(&idrinfo->lock); in tcf_idr_search()
435 static int tcf_idr_delete_index(struct tcf_idrinfo *idrinfo, u32 index) in tcf_idr_delete_index() argument
440 mutex_lock(&idrinfo->lock); in tcf_idr_delete_index()
441 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_delete_index()
443 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
451 WARN_ON(p != idr_remove(&idrinfo->action_idr, in tcf_idr_delete_index()
453 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
464 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
473 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_create() local
509 p->idrinfo = idrinfo; in tcf_idr_create()
541 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_cleanup() local
543 mutex_lock(&idrinfo->lock); in tcf_idr_cleanup()
545 WARN_ON(!IS_ERR(idr_remove(&idrinfo->action_idr, index))); in tcf_idr_cleanup()
546 mutex_unlock(&idrinfo->lock); in tcf_idr_cleanup()
559 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_check_alloc() local
564 mutex_lock(&idrinfo->lock); in tcf_idr_check_alloc()
566 p = idr_find(&idrinfo->action_idr, *index); in tcf_idr_check_alloc()
571 mutex_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
583 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
586 idr_replace(&idrinfo->action_idr, in tcf_idr_check_alloc()
592 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
595 idr_replace(&idrinfo->action_idr, ERR_PTR(-EBUSY), in tcf_idr_check_alloc()
598 mutex_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
604 struct tcf_idrinfo *idrinfo) in tcf_idrinfo_destroy() argument
606 struct idr *idr = &idrinfo->action_idr; in tcf_idrinfo_destroy()
619 idr_destroy(&idrinfo->action_idr); in tcf_idrinfo_destroy()
932 struct tcf_idrinfo *idrinfo; in tcf_idr_insert_many() local
936 idrinfo = a->idrinfo; in tcf_idr_insert_many()
937 mutex_lock(&idrinfo->lock); in tcf_idr_insert_many()
941 idr_replace(&idrinfo->action_idr, a, a->tcfa_index); in tcf_idr_insert_many()
942 mutex_unlock(&idrinfo->lock); in tcf_idr_insert_many()
1379 struct tcf_idrinfo *idrinfo = a->idrinfo; in tcf_action_delete() local
1390 ret = tcf_idr_delete_index(idrinfo, act_index); in tcf_action_delete()