Patch "radix-tree: fix oops after radix_tree_iter_retry" has been added to the 4.4-stable tree
This is a note to let you know that I've just added the patch titled
radix-tree: fix oops after radix_tree_iter_retry
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
radix-tree-fix-oops-after-radix_tree_iter_retry.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
732042821cfa106b3c20b9780e4c60fee9d68900Mon Sep 17 00:00:00 2001
From: Konstantin Khlebnikov <[email protected]>
Date: Fri, 5 Feb 2016 15:37:01 -0800
Subject: radix-tree: fix oops after radix_tree_iter_retry
From: Konstantin Khlebnikov <[email protected]>
commit 732042821cfa106b3c20b9780e4c60fee9d68900 upstream.
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.
--- include/linux/radix-tree.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
include/linux/radix-tree.h +3 -3
@@ -391,7 +391,7 @@ void **radix_tree_iter_retry(struct radi* @iter: pointer to radix tree iterator * Returns: current chunk size */ -static __always_inline unsigned +static __always_inline long radix_tree_chunk_size (struct radix_tree_iter *iter) {return iter->next_index - iter->index;
@@ -425,9 +425,9 @@ radix_tree_next_slot(void **slot, structreturn slot + offset +1 ; } }else { -unsigned size =radix_tree_chunk_size (iter) -1 ; +long size =radix_tree_chunk_size (iter); -while (size--) { +while (--size >0 ) { slot++; iter->index++;if (likely (*slot))
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/radix-tree-fix-oops-after-radix_tree_iter_retry.patch queue-4.4/mm-replace-vma_lock_anon_vma-with-anon_vma_lock_read-write.patch