[RTNETLINK]: Possible dereference in net/core/rtnetlink.c
[safe/jmp/linux-2.6] / lib / radix-tree.c
index 35a2d93..637d556 100644 (file)
@@ -33,7 +33,7 @@
 
 
 #ifdef __KERNEL__
-#define RADIX_TREE_MAP_SHIFT   6
+#define RADIX_TREE_MAP_SHIFT   (CONFIG_BASE_SMALL ? 4 : 6)
 #else
 #define RADIX_TREE_MAP_SHIFT   3       /* For more stressful testing */
 #endif
@@ -389,8 +389,7 @@ void *radix_tree_tag_set(struct radix_tree_root *root,
        struct radix_tree_node *slot;
 
        height = root->height;
-       if (index > radix_tree_maxindex(height))
-               return NULL;
+       BUG_ON(index > radix_tree_maxindex(height));
 
        slot = root->rnode;
        shift = (height - 1) * RADIX_TREE_MAP_SHIFT;
@@ -531,7 +530,7 @@ int radix_tree_tag_get(struct radix_tree_root *root,
                        int ret = tag_get(slot, tag, offset);
 
                        BUG_ON(ret && saw_unset_tag);
-                       return ret;
+                       return !!ret;
                }
                slot = slot->slots[offset];
                shift -= RADIX_TREE_MAP_SHIFT;