Messages in this thread | | | Date | Mon, 25 Sep 2017 06:47:08 -0700 | From | Christoph Hellwig <> | Subject | Re: [PATCH 2/4] idr: Add a function idr_get() |
| |
On Mon, Sep 25, 2017 at 09:20:07AM -0400, Rik van Riel wrote: > > +++ b/lib/idr.c > > @@ -135,6 +135,17 @@ void *idr_get_next_ext(struct idr *idr, unsigned > > long *nextid) > > } > > EXPORT_SYMBOL(idr_get_next_ext); > > > > +void * idr_get(struct idr *idr, int *id) > > +{ > > + struct radix_tree_node *node; > > + void __rcu **slot = NULL; > > + > > + __radix_tree_lookup(&idr->idr_rt, *id, &node, &slot); > > + if (!slot) > > + return NULL; > > + return node; > > +} > > I should have noticed this (much) earlier, but doesn't idr_get do > essentially the same thing as idr_find? > > Also, wouldn't you want to return the pid pointer from slot, > rather than a pointer to the entire radix tree node?
It also seems rather odd to pass id by reference here just to dereference it a little later.
| |