]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
fix up idr patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Nov 2019 17:35:08 +0000 (18:35 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Nov 2019 17:35:08 +0000 (18:35 +0100)
queue-4.14/idr-fix-idr_get_next-race-with-idr_remove.patch
queue-4.19/idr-fix-idr_get_next-race-with-idr_remove.patch

index 542955c3e4d6ba0d3380b503a26fe4e6b56ffe9b..03db9653921bd2227ea11fe61cf48a305e248f0d 100644 (file)
@@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  
 -      slot = radix_tree_iter_find(&idr->idr_rt, &iter, *nextid);
 +      radix_tree_for_each_slot(slot, &idr->idr_rt, &iter, *nextid) {
-+              entry = radix_tree_deref_slot(slot);
++              entry = rcu_dereference_raw(*slot);
 +              if (!entry)
 +                      continue;
 +              if (!radix_tree_deref_retry(entry))
index c2befcd843965de6b8b71933923b1d776aa9cbb6..f90d20a8400ee59244988fb08747197011641c31 100644 (file)
@@ -47,7 +47,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        id = (id < base) ? 0 : id - base;
 -      slot = radix_tree_iter_find(&idr->idr_rt, &iter, id);
 +      radix_tree_for_each_slot(slot, &idr->idr_rt, &iter, id) {
-+              entry = radix_tree_deref_slot(slot);
++              entry = rcu_dereference_raw(*slot);
 +              if (!entry)
 +                      continue;
 +              if (!radix_tree_deref_retry(entry))