Merge branch 'ida-4.19' of git://git.infradead.org/users/willy/linux-dax
[linux-2.6-microblaze.git] / net / core / net_namespace.c
index 738871a..670c84b 100644 (file)
@@ -1001,22 +1001,18 @@ static int register_pernet_operations(struct list_head *list,
        int error;
 
        if (ops->id) {
-again:
-               error = ida_get_new_above(&net_generic_ids, MIN_PERNET_OPS_ID, ops->id);
-               if (error < 0) {
-                       if (error == -EAGAIN) {
-                               ida_pre_get(&net_generic_ids, GFP_KERNEL);
-                               goto again;
-                       }
+               error = ida_alloc_min(&net_generic_ids, MIN_PERNET_OPS_ID,
+                               GFP_KERNEL);
+               if (error < 0)
                        return error;
-               }
+               *ops->id = error;
                max_gen_ptrs = max(max_gen_ptrs, *ops->id + 1);
        }
        error = __register_pernet_operations(list, ops);
        if (error) {
                rcu_barrier();
                if (ops->id)
-                       ida_remove(&net_generic_ids, *ops->id);
+                       ida_free(&net_generic_ids, *ops->id);
        }
 
        return error;
@@ -1027,7 +1023,7 @@ static void unregister_pernet_operations(struct pernet_operations *ops)
        __unregister_pernet_operations(ops);
        rcu_barrier();
        if (ops->id)
-               ida_remove(&net_generic_ids, *ops->id);
+               ida_free(&net_generic_ids, *ops->id);
 }
 
 /**