d = debugfs_create_file("log", S_IFREG | S_IRUSR,
                                bat_priv->debug_dir, bat_priv, &log_fops);
-       if (d)
+       if (!d)
                goto err;
 
        return 0;
 
 err:
-       return 1;
+       return -ENOMEM;
 }
 
 static void debug_log_cleanup(struct bat_priv *bat_priv)
        if (!bat_priv->debug_dir)
                goto out;
 
-       bat_socket_setup(bat_priv);
-       debug_log_setup(bat_priv);
+       if (bat_socket_setup(bat_priv) < 0)
+               goto rem_attr;
+
+       if (debug_log_setup(bat_priv) < 0)
+               goto rem_attr;
 
        for (bat_debug = mesh_debuginfos; *bat_debug; ++bat_debug) {
                file = debugfs_create_file(((*bat_debug)->attr).name,
 
 {
        struct batman_ogm_packet *batman_ogm_packet;
        uint32_t random_seqno;
-       int res = -1;
+       int res = -ENOMEM;
 
        /* randomize initial seqno to avoid collision */
        get_random_bytes(&random_seqno, sizeof(random_seqno));
 
 int throw_uevent(struct bat_priv *bat_priv, enum uev_type type,
                 enum uev_action action, const char *data)
 {
-       int ret = -1;
+       int ret = -ENOMEM;
        struct hard_iface *primary_if = NULL;
        struct kobject *bat_kobj;
        char *uevent_env[4] = { NULL, NULL, NULL, NULL };
 
        bat_priv->bcast_duplist_curr = 0;
 
        if (bat_priv->claim_hash)
-               return 1;
+               return 0;
 
        bat_priv->claim_hash = hash_new(128);
        bat_priv->backbone_hash = hash_new(32);
 
        if (!bat_priv->claim_hash || !bat_priv->backbone_hash)
-               return -1;
+               return -ENOMEM;
 
        batadv_hash_set_lock_class(bat_priv->claim_hash,
                                   &claim_hash_lock_class_key);
        bat_dbg(DBG_BLA, bat_priv, "bla hashes initialized\n");
 
        bla_start_timer(bat_priv);
-       return 1;
+       return 0;
 }
 
 /**
 
        bat_priv = netdev_priv(hard_iface->soft_iface);
 
        ret = bat_priv->bat_algo_ops->bat_iface_enable(hard_iface);
-       if (ret < 0) {
-               ret = -ENOMEM;
+       if (ret < 0)
                goto err_dev;
-       }
 
        hard_iface->if_num = bat_priv->num_ifaces;
        bat_priv->num_ifaces++;
 
 
        d = debugfs_create_file(ICMP_SOCKET, S_IFREG | S_IWUSR | S_IRUSR,
                                bat_priv->debug_dir, bat_priv, &fops);
-       if (d)
+       if (!d)
                goto err;
 
        return 0;
 
 err:
-       return 1;
+       return -ENOMEM;
 }
 
 static void bat_socket_add_packet(struct socket_client *socket_client,
 
 int mesh_init(struct net_device *soft_iface)
 {
        struct bat_priv *bat_priv = netdev_priv(soft_iface);
+       int ret;
 
        spin_lock_init(&bat_priv->forw_bat_list_lock);
        spin_lock_init(&bat_priv->forw_bcast_list_lock);
        INIT_LIST_HEAD(&bat_priv->tt_req_list);
        INIT_LIST_HEAD(&bat_priv->tt_roam_list);
 
-       if (originator_init(bat_priv) < 1)
+       ret = originator_init(bat_priv);
+       if (ret < 0)
                goto err;
 
-       if (tt_init(bat_priv) < 1)
+       ret = tt_init(bat_priv);
+       if (ret < 0)
                goto err;
 
        tt_local_add(soft_iface, soft_iface->dev_addr, NULL_IFINDEX);
 
-       if (vis_init(bat_priv) < 1)
+       ret = vis_init(bat_priv);
+       if (ret < 0)
                goto err;
 
-       if (bla_init(bat_priv) < 1)
+       ret = bla_init(bat_priv);
+       if (ret < 0)
                goto err;
 
        atomic_set(&bat_priv->gw_reselect, 0);
        atomic_set(&bat_priv->mesh_state, MESH_ACTIVE);
-       goto end;
+
+       return 0;
 
 err:
        mesh_free(soft_iface);
-       return -1;
-
-end:
-       return 0;
+       return ret;
 }
 
 void mesh_free(struct net_device *soft_iface)
 int bat_algo_register(struct bat_algo_ops *bat_algo_ops)
 {
        struct bat_algo_ops *bat_algo_ops_tmp;
-       int ret = -1;
+       int ret;
 
        bat_algo_ops_tmp = bat_algo_get(bat_algo_ops->name);
        if (bat_algo_ops_tmp) {
                pr_info("Trying to register already registered routing algorithm: %s\n",
                        bat_algo_ops->name);
+               ret = -EEXIST;
                goto out;
        }
 
            !bat_algo_ops->bat_ogm_emit) {
                pr_info("Routing algo '%s' does not implement required ops\n",
                        bat_algo_ops->name);
+               ret = -EINVAL;
                goto out;
        }
 
 int bat_algo_select(struct bat_priv *bat_priv, char *name)
 {
        struct bat_algo_ops *bat_algo_ops;
-       int ret = -1;
+       int ret = -EINVAL;
 
        bat_algo_ops = bat_algo_get(name);
        if (!bat_algo_ops)
 
 int originator_init(struct bat_priv *bat_priv)
 {
        if (bat_priv->orig_hash)
-               return 1;
+               return 0;
 
        bat_priv->orig_hash = hash_new(1024);
 
                goto err;
 
        start_purge_timer(bat_priv);
-       return 1;
+       return 0;
 
 err:
-       return 0;
+       return -ENOMEM;
 }
 
 void neigh_node_free_ref(struct neigh_node *neigh_node)
        data_ptr = kmalloc(max_if_num * sizeof(unsigned long) * NUM_WORDS,
                           GFP_ATOMIC);
        if (!data_ptr)
-               return -1;
+               return -ENOMEM;
 
        memcpy(data_ptr, orig_node->bcast_own,
               (max_if_num - 1) * sizeof(unsigned long) * NUM_WORDS);
 
        data_ptr = kmalloc(max_if_num * sizeof(uint8_t), GFP_ATOMIC);
        if (!data_ptr)
-               return -1;
+               return -ENOMEM;
 
        memcpy(data_ptr, orig_node->bcast_own_sum,
               (max_if_num - 1) * sizeof(uint8_t));
                        ret = orig_node_add_if(orig_node, max_if_num);
                        spin_unlock_bh(&orig_node->ogm_cnt_lock);
 
-                       if (ret == -1)
+                       if (ret == -ENOMEM)
                                goto err;
                }
                rcu_read_unlock();
        chunk_size = sizeof(unsigned long) * NUM_WORDS;
        data_ptr = kmalloc(max_if_num * chunk_size, GFP_ATOMIC);
        if (!data_ptr)
-               return -1;
+               return -ENOMEM;
 
        /* copy first part */
        memcpy(data_ptr, orig_node->bcast_own, del_if_num * chunk_size);
 
        data_ptr = kmalloc(max_if_num * sizeof(uint8_t), GFP_ATOMIC);
        if (!data_ptr)
-               return -1;
+               return -ENOMEM;
 
        memcpy(data_ptr, orig_node->bcast_own_sum,
               del_if_num * sizeof(uint8_t));
                                        hard_iface->if_num);
                        spin_unlock_bh(&orig_node->ogm_cnt_lock);
 
-                       if (ret == -1)
+                       if (ret == -ENOMEM)
                                goto err;
                }
                rcu_read_unlock();
 
 static int tt_local_init(struct bat_priv *bat_priv)
 {
        if (bat_priv->tt_local_hash)
-               return 1;
+               return 0;
 
        bat_priv->tt_local_hash = hash_new(1024);
 
        if (!bat_priv->tt_local_hash)
-               return 0;
+               return -ENOMEM;
 
-       return 1;
+       return 0;
 }
 
 void tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
 static int tt_global_init(struct bat_priv *bat_priv)
 {
        if (bat_priv->tt_global_hash)
-               return 1;
+               return 0;
 
        bat_priv->tt_global_hash = hash_new(1024);
 
        if (!bat_priv->tt_global_hash)
-               return 0;
+               return -ENOMEM;
 
-       return 1;
+       return 0;
 }
 
 static void tt_changes_list_free(struct bat_priv *bat_priv)
 
 int tt_init(struct bat_priv *bat_priv)
 {
-       if (!tt_local_init(bat_priv))
-               return 0;
+       int ret;
 
-       if (!tt_global_init(bat_priv))
-               return 0;
+       ret = tt_local_init(bat_priv);
+       if (ret < 0)
+               return ret;
+
+       ret = tt_global_init(bat_priv);
+       if (ret < 0)
+               return ret;
 
        tt_start_timer(bat_priv);
 
 
                best_tq = find_best_vis_server(bat_priv, info);
 
                if (best_tq < 0)
-                       return -1;
+                       return best_tq;
        }
 
        for (i = 0; i < hash->size; i++) {
        int hash_added;
 
        if (bat_priv->vis_hash)
-               return 1;
+               return 0;
 
        spin_lock_bh(&bat_priv->vis_hash_lock);
 
 
        spin_unlock_bh(&bat_priv->vis_hash_lock);
        start_vis_timer(bat_priv);
-       return 1;
+       return 0;
 
 free_info:
        kfree(bat_priv->my_vis_info);
 err:
        spin_unlock_bh(&bat_priv->vis_hash_lock);
        vis_quit(bat_priv);
-       return 0;
+       return -ENOMEM;
 }
 
 /* Decrease the reference count on a hash item info */