radix-tree: fix oops after radix_tree_iter_retry
authorKonstantin Khlebnikov <[email protected]>
Fri, 5 Feb 2016 23:37:01 +0000 (15:37 -0800)
committerLinus Torvalds <[email protected]>
Sat, 6 Feb 2016 02:10:40 +0000 (18:10 -0800)
commit732042821cfa106b3c20b9780e4c60fee9d68900
tree9e825128f3807b51449536a3301984857db5e412
parentb14fd334ff3dc47b31c3592c166af5ea42b204d3
radix-tree: fix oops after radix_tree_iter_retry

Helper radix_tree_iter_retry() resets next_index to the current index.
In following radix_tree_next_slot current chunk size becomes zero.  This
isn't checked and it tries to dereference null pointer in slot.

Tagged iterator is fine because retry happens only at slot 0 where tag
bitmask in iter->tags is filled with single bit.

Fixes: 46437f9a554f ("radix-tree: fix race in gang lookup")
Signed-off-by: Konstantin Khlebnikov <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Hugh Dickins <[email protected]>
Cc: Ohad Ben-Cohen <[email protected]>
Cc: Jeremiah Mahler <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/radix-tree.h