[B.A.T.M.A.N.] [PATCH 2/2] batman-adv: Avoid crashing kernel with multicast asserts

Sven Eckelmann sven at narfation.org
Fri Jul 17 09:39:47 CEST 2015


The BUG_ON added to the multicast code in 7f220ed1f06 ("batman-adv: Fix
potential synchronization issues in mcast tvlv handler") will crash the
kernel when the statement is true. This is not strictly required and a
WARN_ON is enough to raise attention.

Signed-off-by: Sven Eckelmann <sven at narfation.org>
---
 net/batman-adv/multicast.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c
index 25ed931..d71c70e 100644
--- a/net/batman-adv/multicast.c
+++ b/net/batman-adv/multicast.c
@@ -618,7 +618,7 @@ static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv,
 
 		spin_lock_bh(&bat_priv->mcast.want_lists_lock);
 		/* flag checks above + mcast_handler_lock prevents this */
-		BUG_ON(!hlist_unhashed(node));
+		WARN_ON(!hlist_unhashed(node));
 
 		hlist_add_head_rcu(node, head);
 		spin_unlock_bh(&bat_priv->mcast.want_lists_lock);
@@ -629,7 +629,7 @@ static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv,
 
 		spin_lock_bh(&bat_priv->mcast.want_lists_lock);
 		/* flag checks above + mcast_handler_lock prevents this */
-		BUG_ON(hlist_unhashed(node));
+		WARN_ON(hlist_unhashed(node));
 
 		hlist_del_init_rcu(node);
 		spin_unlock_bh(&bat_priv->mcast.want_lists_lock);
@@ -663,7 +663,7 @@ static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv,
 
 		spin_lock_bh(&bat_priv->mcast.want_lists_lock);
 		/* flag checks above + mcast_handler_lock prevents this */
-		BUG_ON(!hlist_unhashed(node));
+		WARN_ON(!hlist_unhashed(node));
 
 		hlist_add_head_rcu(node, head);
 		spin_unlock_bh(&bat_priv->mcast.want_lists_lock);
@@ -674,7 +674,7 @@ static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv,
 
 		spin_lock_bh(&bat_priv->mcast.want_lists_lock);
 		/* flag checks above + mcast_handler_lock prevents this */
-		BUG_ON(hlist_unhashed(node));
+		WARN_ON(hlist_unhashed(node));
 
 		hlist_del_init_rcu(node);
 		spin_unlock_bh(&bat_priv->mcast.want_lists_lock);
@@ -708,7 +708,7 @@ static void batadv_mcast_want_ipv6_update(struct batadv_priv *bat_priv,
 
 		spin_lock_bh(&bat_priv->mcast.want_lists_lock);
 		/* flag checks above + mcast_handler_lock prevents this */
-		BUG_ON(!hlist_unhashed(node));
+		WARN_ON(!hlist_unhashed(node));
 
 		hlist_add_head_rcu(node, head);
 		spin_unlock_bh(&bat_priv->mcast.want_lists_lock);
@@ -719,7 +719,7 @@ static void batadv_mcast_want_ipv6_update(struct batadv_priv *bat_priv,
 
 		spin_lock_bh(&bat_priv->mcast.want_lists_lock);
 		/* flag checks above + mcast_handler_lock prevents this */
-		BUG_ON(hlist_unhashed(node));
+		WARN_ON(hlist_unhashed(node));
 
 		hlist_del_init_rcu(node);
 		spin_unlock_bh(&bat_priv->mcast.want_lists_lock);
-- 
2.1.4



More information about the B.A.T.M.A.N mailing list