Lines Matching refs:idrinfo
127 struct tcf_idrinfo *idrinfo = p->idrinfo; in __tcf_action_put() local
129 if (refcount_dec_and_mutex_lock(&p->tcfa_refcnt, &idrinfo->lock)) { in __tcf_action_put()
132 idr_remove(&idrinfo->action_idr, p->tcfa_index); in __tcf_action_put()
133 mutex_unlock(&idrinfo->lock); in __tcf_action_put()
229 static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_dump_walker() argument
236 struct idr *idr = &idrinfo->action_idr; in tcf_dump_walker()
241 mutex_lock(&idrinfo->lock); in tcf_dump_walker()
278 mutex_unlock(&idrinfo->lock); in tcf_dump_walker()
296 idr_remove(&p->idrinfo->action_idr, p->tcfa_index); in tcf_idr_release_unsafe()
304 static int tcf_del_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_del_walker() argument
311 struct idr *idr = &idrinfo->action_idr; in tcf_del_walker()
323 mutex_lock(&idrinfo->lock); in tcf_del_walker()
334 mutex_unlock(&idrinfo->lock); in tcf_del_walker()
358 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_generic_walker() local
361 return tcf_del_walker(idrinfo, skb, ops, extack); in tcf_generic_walker()
363 return tcf_dump_walker(idrinfo, skb, cb); in tcf_generic_walker()
374 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_search() local
377 mutex_lock(&idrinfo->lock); in tcf_idr_search()
378 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_search()
383 mutex_unlock(&idrinfo->lock); in tcf_idr_search()
393 static int tcf_idr_delete_index(struct tcf_idrinfo *idrinfo, u32 index) in tcf_idr_delete_index() argument
398 mutex_lock(&idrinfo->lock); in tcf_idr_delete_index()
399 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_delete_index()
401 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
409 WARN_ON(p != idr_remove(&idrinfo->action_idr, in tcf_idr_delete_index()
411 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
422 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
431 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_create() local
465 p->idrinfo = idrinfo; in tcf_idr_create()
497 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_cleanup() local
499 mutex_lock(&idrinfo->lock); in tcf_idr_cleanup()
501 WARN_ON(!IS_ERR(idr_remove(&idrinfo->action_idr, index))); in tcf_idr_cleanup()
502 mutex_unlock(&idrinfo->lock); in tcf_idr_cleanup()
515 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_check_alloc() local
520 mutex_lock(&idrinfo->lock); in tcf_idr_check_alloc()
522 p = idr_find(&idrinfo->action_idr, *index); in tcf_idr_check_alloc()
527 mutex_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
539 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
542 idr_replace(&idrinfo->action_idr, in tcf_idr_check_alloc()
548 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
551 idr_replace(&idrinfo->action_idr, ERR_PTR(-EBUSY), in tcf_idr_check_alloc()
554 mutex_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
560 struct tcf_idrinfo *idrinfo) in tcf_idrinfo_destroy() argument
562 struct idr *idr = &idrinfo->action_idr; in tcf_idrinfo_destroy()
575 idr_destroy(&idrinfo->action_idr); in tcf_idrinfo_destroy()
925 struct tcf_idrinfo *idrinfo; in tcf_idr_insert_many() local
929 idrinfo = a->idrinfo; in tcf_idr_insert_many()
930 mutex_lock(&idrinfo->lock); in tcf_idr_insert_many()
934 idr_replace(&idrinfo->action_idr, a, a->tcfa_index); in tcf_idr_insert_many()
935 mutex_unlock(&idrinfo->lock); in tcf_idr_insert_many()
1373 struct tcf_idrinfo *idrinfo = a->idrinfo; in tcf_action_delete() local
1384 ret = tcf_idr_delete_index(idrinfo, act_index); in tcf_action_delete()