diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-04-16 13:20:06 (GMT) |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-04-16 13:20:06 (GMT) |
commit | cf0dbba515415bb19b11f9323d5f7bebd7f24fd6 (patch) | |
tree | 375bbc1ade1a92acd6493d224dd701fd7f209014 /lib/radix-tree.c | |
parent | 1cff399ecd9125d8e6a634a1957be1aeb3195a12 (diff) | |
parent | 0340c7dccd80d8706c636e030a6ebbddbddca690 (diff) | |
download | linux-fsl-qoriq-cf0dbba515415bb19b11f9323d5f7bebd7f24fd6.tar.xz |
Merge remote branch 'alsa/devel' into topic/misc
Diffstat (limited to 'lib/radix-tree.c')
-rw-r--r-- | lib/radix-tree.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/radix-tree.c b/lib/radix-tree.c index 6b9670d..2a087e0 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c @@ -28,7 +28,6 @@ #include <linux/slab.h> #include <linux/notifier.h> #include <linux/cpu.h> -#include <linux/gfp.h> #include <linux/string.h> #include <linux/bitops.h> #include <linux/rcupdate.h> @@ -556,6 +555,10 @@ EXPORT_SYMBOL(radix_tree_tag_clear); * * 0: tag not present or not set * 1: tag set + * + * Note that the return value of this function may not be relied on, even if + * the RCU lock is held, unless tag modification and node deletion are excluded + * from concurrency. */ int radix_tree_tag_get(struct radix_tree_root *root, unsigned long index, unsigned int tag) @@ -596,12 +599,8 @@ int radix_tree_tag_get(struct radix_tree_root *root, */ if (!tag_get(node, tag, offset)) saw_unset_tag = 1; - if (height == 1) { - int ret = tag_get(node, tag, offset); - - BUG_ON(ret && saw_unset_tag); - return !!ret; - } + if (height == 1) + return !!tag_get(node, tag, offset); node = rcu_dereference_raw(node->slots[offset]); shift -= RADIX_TREE_MAP_SHIFT; height--; |