ipc: get rid of ids->tables_initialized hack
[linux-2.6-microblaze.git] / ipc / util.c
index bd1863b..7c1387c 100644 (file)
@@ -126,7 +126,6 @@ int ipc_init_ids(struct ipc_ids *ids)
        if (err)
                return err;
        idr_init(&ids->ipcs_idr);
-       ids->tables_initialized = true;
        ids->max_id = -1;
 #ifdef CONFIG_CHECKPOINT_RESTORE
        ids->next_id = -1;
@@ -179,19 +178,16 @@ void __init ipc_init_proc_interface(const char *path, const char *header,
  */
 static struct kern_ipc_perm *ipc_findkey(struct ipc_ids *ids, key_t key)
 {
-       struct kern_ipc_perm *ipcp = NULL;
+       struct kern_ipc_perm *ipcp;
 
-       if (likely(ids->tables_initialized))
-               ipcp = rhashtable_lookup_fast(&ids->key_ht, &key,
+       ipcp = rhashtable_lookup_fast(&ids->key_ht, &key,
                                              ipc_kht_params);
+       if (!ipcp)
+               return NULL;
 
-       if (ipcp) {
-               rcu_read_lock();
-               ipc_lock_object(ipcp);
-               return ipcp;
-       }
-
-       return NULL;
+       rcu_read_lock();
+       ipc_lock_object(ipcp);
+       return ipcp;
 }
 
 /*
@@ -269,7 +265,7 @@ int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int limit)
        if (limit > IPCMNI)
                limit = IPCMNI;
 
-       if (!ids->tables_initialized || ids->in_use >= limit)
+       if (ids->in_use >= limit)
                return -ENOSPC;
 
        idr_preload(GFP_KERNEL);
@@ -578,9 +574,6 @@ struct kern_ipc_perm *ipc_obtain_object_idr(struct ipc_ids *ids, int id)
        struct kern_ipc_perm *out;
        int lid = ipcid_to_idx(id);
 
-       if (unlikely(!ids->tables_initialized))
-               return ERR_PTR(-EINVAL);
-
        out = idr_find(&ids->ipcs_idr, lid);
        if (!out)
                return ERR_PTR(-EINVAL);