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);
...

Reply via email to