Re: [PATCH 10/14] net: sched: extend act API for lockless actions
From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date: 2018-05-19 22:18:08
Also in:
lkml, netfilter-devel
From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date: 2018-05-19 22:18:08
Also in:
lkml, netfilter-devel
Please use a more meaningful patch summary. This one is too generic. On Mon, May 14, 2018 at 05:27:11PM +0300, Vlad Buslov wrote: ...
+int tcf_idr_find_delete(struct tc_action_net *tn, u32 index)
What about naming it tcf_idr_delete_index() instead? The find operation is always implicit when you don't specify the object itself directly, and then it describes which key will be used.
+{
+ struct tcf_idrinfo *idrinfo = tn->idrinfo;
+ struct tc_action *p;
+ int ret = 0;
+
+ spin_lock_bh(&idrinfo->lock);
+ p = idr_find(&idrinfo->action_idr, index);
+ if (!p) {
+ spin_unlock(&idrinfo->lock);
+ return -ENOENT;
+ }
+
+ if (!atomic_read(&p->tcfa_bindcnt)) {
+ if (refcount_dec_and_test(&p->tcfa_refcnt)) {
+ struct module *owner = p->ops->owner;
+
+ WARN_ON(p != idr_remove(&idrinfo->action_idr,
+ p->tcfa_index));
+ spin_unlock_bh(&idrinfo->lock);
+
+ tcf_action_cleanup(p);
+ module_put(owner);
+ return 0;
+ }
+ ret = 0;
+ } else {
+ ret = -EPERM;
+ }
+
+ spin_unlock_bh(&idrinfo->lock);
+ return ret;
+}
+EXPORT_SYMBOL(tcf_idr_find_delete);...