Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drivers/hwspinlock: use correct radix tree API

radix_tree_is_indirect_ptr() is an internal API. The correct call to
use is radix_tree_deref_retry() which has the appropriate unlikely()
annotation.

Fixes: c6400ba7e13a ("drivers/hwspinlock: fix race between radix tree insertion and lookup")
Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Cc: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Kirill Shutemov <kirill.shutemov@linux.intel.com>
Cc: Jan Kara <jack@suse.com>
Cc: Neil Brown <neilb@suse.de>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Matthew Wilcox and committed by
Linus Torvalds
b76ba4af 6b053b8e

+1 -1
+1 -1
drivers/hwspinlock/hwspinlock_core.c
··· 313 313 hwlock = radix_tree_deref_slot(slot); 314 314 if (unlikely(!hwlock)) 315 315 continue; 316 - if (radix_tree_is_indirect_ptr(hwlock)) { 316 + if (radix_tree_deref_retry(hwlock)) { 317 317 slot = radix_tree_iter_retry(&iter); 318 318 continue; 319 319 }