Some members of "struct batadv_orig_node" are not available if compiling
without the multicast optimizations feature.

Fix this by moving their initialization into the right #ifdef's.

Fixes: 7f220ed1f063 ("batman-adv: Fix potential synchronization issues in mcast 
tvlv handler")
Signed-off-by: Linus Lüssing <[email protected]>
---
 originator.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/originator.c b/originator.c
index a2ba182..a5276db 100644
--- a/originator.c
+++ b/originator.c
@@ -658,15 +658,11 @@ struct batadv_orig_node *batadv_orig_node_new(struct 
batadv_priv *bat_priv,
        INIT_HLIST_HEAD(&orig_node->neigh_list);
        INIT_LIST_HEAD(&orig_node->vlan_list);
        INIT_HLIST_HEAD(&orig_node->ifinfo_list);
-       INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node);
-       INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node);
-       INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node);
        spin_lock_init(&orig_node->bcast_seqno_lock);
        spin_lock_init(&orig_node->neigh_list_lock);
        spin_lock_init(&orig_node->tt_buff_lock);
        spin_lock_init(&orig_node->tt_lock);
        spin_lock_init(&orig_node->vlan_list_lock);
-       spin_lock_init(&orig_node->mcast_handler_lock);
 
        batadv_nc_init_orig(orig_node);
 
@@ -682,8 +678,13 @@ struct batadv_orig_node *batadv_orig_node_new(struct 
batadv_priv *bat_priv,
        orig_node->last_seen = jiffies;
        reset_time = jiffies - 1 - msecs_to_jiffies(BATADV_RESET_PROTECTION_MS);
        orig_node->bcast_seqno_reset = reset_time;
+
 #ifdef CONFIG_BATMAN_ADV_MCAST
        orig_node->mcast_flags = BATADV_NO_FLAGS;
+       INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node);
+       INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node);
+       INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node);
+       spin_lock_init(&orig_node->mcast_handler_lock);
 #endif
 
        /* create a vlan object for the "untagged" LAN */
-- 
1.7.10.4

Reply via email to