Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 234a4624 authored by Matthew Wilcox's avatar Matthew Wilcox
Browse files

idr: Delete idr_replace_ext function



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: default avatarMatthew Wilcox <mawilcox@microsoft.com>
parent 9c160941
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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)
+3 −12
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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);
Loading