Re: [PATCH] radix-tree: fix radix_tree_iter_retry() for tagged iterators.

From: Andrew Morton
Date: Fri Jul 15 2016 - 16:57:40 EST


On Fri, 15 Jul 2016 13:00:40 -0600 Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> wrote:

>
> ...
>
> In looking at this more, I agree that your patch fixes this particular bug,
> but I think that ultimately we might want something more general.
>
> ...
>
> --- a/include/linux/radix-tree.h
> +++ b/include/linux/radix-tree.h
> @@ -463,6 +463,9 @@ static inline struct radix_tree_node *entry_to_node(void *ptr)
> static __always_inline void **
> radix_tree_next_slot(void **slot, struct radix_tree_iter *iter, unsigned flags)
> {
> + if (unlikely(!slot))
> + return NULL;
> +
> if (flags & RADIX_TREE_ITER_TAGGED) {
> void *canon = slot;

I'll hang onto Andrey's
radix-tree-fix-radix_tree_iter_retry-for-tagged-iterators.patch for
now, plan to send it in to Linus Wednesdayish. If we can get the above
settled down prior to that then I shall swap over.