idr: Permit any valid kernel pointer to be stored
[linux-2.6-block.git] / lib / idr.c
index fab2fd5bc326bef8bdc9277485d9fe0d4ec50733..729e381e23b4324676e8f4375bde88c17dbfa5fa 100644 (file)
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -39,8 +39,6 @@ int idr_alloc_u32(struct idr *idr, void *ptr, u32 *nextid,
        unsigned int base = idr->idr_base;
        unsigned int id = *nextid;
 
-       if (WARN_ON_ONCE(radix_tree_is_internal_node(ptr)))
-               return -EINVAL;
        if (WARN_ON_ONCE(!(idr->idr_rt.gfp_mask & ROOT_IS_IDR)))
                idr->idr_rt.gfp_mask |= IDR_RT_MARKER;
 
@@ -295,8 +293,6 @@ void *idr_replace(struct idr *idr, void *ptr, unsigned long id)
        void __rcu **slot = NULL;
        void *entry;
 
-       if (WARN_ON_ONCE(radix_tree_is_internal_node(ptr)))
-               return ERR_PTR(-EINVAL);
        id -= idr->idr_base;
 
        entry = __radix_tree_lookup(&idr->idr_rt, id, &node, &slot);