[linux-next] LinuxNextTracking branch, master, updated. next-20120904

batman at open-mesh.org batman at open-mesh.org
Wed Sep 5 00:17:22 CEST 2012


The following commit has been merged in the master branch:
commit 624463079e0af455a2d70d2a59b9e2f6b5827aea
Author: Simon Wunderlich <simon.wunderlich at s2003.tu-chemnitz.de>
Date:   Sun Jul 1 22:51:55 2012 +0200

    batman-adv: check batadv_orig_hash_add_if() return code
    
    If this call fails, some of the orig_nodes spaces may have been
    resized for the increased number of interface, and some may not.
    If we would just continue with the larger number of interfaces,
    this would lead to access to not allocated memory later.
    
    We better check the return code, and don't add the interface if
    no memory is available. OTOH, keeping some of the orig_nodes
    with too much memory allocated should hurt no one (except for
    a few too many bytes allocated).
    
    Signed-off-by: Simon Wunderlich <siwu at hrz.tu-chemnitz.de>
    Signed-off-by: Antonio Quartulli <ordex at autistici.org>

diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
index 282bf6e..2c5a247 100644
--- a/net/batman-adv/hard-interface.c
+++ b/net/batman-adv/hard-interface.c
@@ -313,7 +313,13 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 	hard_iface->if_num = bat_priv->num_ifaces;
 	bat_priv->num_ifaces++;
 	hard_iface->if_status = BATADV_IF_INACTIVE;
-	batadv_orig_hash_add_if(hard_iface, bat_priv->num_ifaces);
+	ret = batadv_orig_hash_add_if(hard_iface, bat_priv->num_ifaces);
+	if (ret < 0) {
+		bat_priv->bat_algo_ops->bat_iface_disable(hard_iface);
+		bat_priv->num_ifaces--;
+		hard_iface->if_status = BATADV_IF_NOT_IN_USE;
+		goto err_dev;
+	}
 
 	hard_iface->batman_adv_ptype.type = ethertype;
 	hard_iface->batman_adv_ptype.func = batadv_batman_skb_recv;

-- 
LinuxNextTracking


More information about the linux-merge mailing list