idr: Delete idr_replace_ext function
authorMatthew Wilcox <mawilcox@microsoft.com>
Tue, 28 Nov 2017 14:56:36 +0000 (09:56 -0500)
committerMatthew Wilcox <mawilcox@microsoft.com>
Tue, 6 Feb 2018 21:40:31 +0000 (16:40 -0500)
Changing idr_replace's 'id' argument to 'unsigned long' works for all
callers.  Callers which passed a negative ID now get -ENOENT instead of
-EINVAL.  No callers relied on this error value.

Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
include/linux/idr.h
lib/idr.c
net/sched/act_api.c
net/sched/cls_basic.c
net/sched/cls_bpf.c
net/sched/cls_flower.c
net/sched/cls_u32.c

index 118987a17ada2974efbfea7ea96fe1271bc5cc5d..f1299c4dc45fe1b73d636fe7e6f5d6cc59f2838c 100644 (file)
@@ -136,8 +136,7 @@ int idr_for_each(const struct idr *,
                 int (*fn)(int id, void *p, void *data), void *data);
 void *idr_get_next(struct idr *, int *nextid);
 void *idr_get_next_ext(struct idr *idr, unsigned long *nextid);
-void *idr_replace(struct idr *, void *, int id);
-void *idr_replace_ext(struct idr *idr, void *ptr, unsigned long id);
+void *idr_replace(struct idr *, void *, unsigned long id);
 void idr_destroy(struct idr *);
 
 static inline void *idr_remove(struct idr *idr, unsigned long id)
index 2593ce513a180a4f6de3515350592c9d4e4981d1..577bfd4fe5c2dbc52d3c080088734f98ed763109 100644 (file)
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -147,18 +147,9 @@ EXPORT_SYMBOL(idr_get_next_ext);
  * the one being replaced!).
  *
  * Returns: the old value on success.  %-ENOENT indicates that @id was not
- * found.  %-EINVAL indicates that @id or @ptr were not valid.
+ * found.  %-EINVAL indicates that @ptr was not valid.
  */
-void *idr_replace(struct idr *idr, void *ptr, int id)
-{
-       if (id < 0)
-               return ERR_PTR(-EINVAL);
-
-       return idr_replace_ext(idr, ptr, id);
-}
-EXPORT_SYMBOL(idr_replace);
-
-void *idr_replace_ext(struct idr *idr, void *ptr, unsigned long id)
+void *idr_replace(struct idr *idr, void *ptr, unsigned long id)
 {
        struct radix_tree_node *node;
        void __rcu **slot = NULL;
@@ -175,7 +166,7 @@ void *idr_replace_ext(struct idr *idr, void *ptr, unsigned long id)
 
        return entry;
 }
-EXPORT_SYMBOL(idr_replace_ext);
+EXPORT_SYMBOL(idr_replace);
 
 /**
  * DOC: IDA description
index be5b2b455371bda47367894ee51a1035ae171d42..1572466be0315b385b397e77e5b8223db7048c99 100644 (file)
@@ -348,7 +348,7 @@ void tcf_idr_insert(struct tc_action_net *tn, struct tc_action *a)
        struct tcf_idrinfo *idrinfo = tn->idrinfo;
 
        spin_lock_bh(&idrinfo->lock);
-       idr_replace_ext(&idrinfo->action_idr, a, a->tcfa_index);
+       idr_replace(&idrinfo->action_idr, a, a->tcfa_index);
        spin_unlock_bh(&idrinfo->lock);
 }
 EXPORT_SYMBOL(tcf_idr_insert);
index 121dff0a176345007bddfc3a2d7d2fd77cd9c5a2..588c635f195e9c785d771714d18967c324278f8d 100644 (file)
@@ -235,7 +235,7 @@ static int basic_change(struct net *net, struct sk_buff *in_skb,
        *arg = fnew;
 
        if (fold) {
-               idr_replace_ext(&head->handle_idr, fnew, fnew->handle);
+               idr_replace(&head->handle_idr, fnew, fnew->handle);
                list_replace_rcu(&fold->link, &fnew->link);
                tcf_unbind_filter(tp, &fold->res);
                tcf_exts_get_net(&fold->exts);
index e45137e3f56762eec7260963183c31f35f0637e4..8cb3a33b1afdf388e0529e071ea0df5c5a030d0f 100644 (file)
@@ -526,7 +526,7 @@ static int cls_bpf_change(struct net *net, struct sk_buff *in_skb,
                prog->gen_flags |= TCA_CLS_FLAGS_NOT_IN_HW;
 
        if (oldprog) {
-               idr_replace_ext(&head->handle_idr, prog, handle);
+               idr_replace(&head->handle_idr, prog, handle);
                list_replace_rcu(&oldprog->link, &prog->link);
                tcf_unbind_filter(tp, &oldprog->res);
                tcf_exts_get_net(&oldprog->exts);
index e098e8ab76c9d7c754fee5aad059864da698b950..0d1b0c11de347a8793eae517191999ac7e6b6e78 100644 (file)
@@ -967,7 +967,7 @@ static int fl_change(struct net *net, struct sk_buff *in_skb,
 
        if (fold) {
                fnew->handle = handle;
-               idr_replace_ext(&head->handle_idr, fnew, fnew->handle);
+               idr_replace(&head->handle_idr, fnew, fnew->handle);
                list_replace_rcu(&fold->list, &fnew->list);
                tcf_unbind_filter(tp, &fold->res);
                tcf_exts_get_net(&fold->exts);
index bd55ed783cb176b8709523bd4d26d5e88c25870b..5b256da985b15e492e9f3c30b57674c5bb7287d5 100644 (file)
@@ -848,7 +848,7 @@ static void u32_replace_knode(struct tcf_proto *tp, struct tc_u_common *tp_c,
                if (pins->handle == n->handle)
                        break;
 
-       idr_replace_ext(&ht->handle_idr, n, n->handle);
+       idr_replace(&ht->handle_idr, n, n->handle);
        RCU_INIT_POINTER(n->next, pins->next);
        rcu_assign_pointer(*ins, n);
 }