diff options
Diffstat (limited to 'net/batman-adv/multicast.c')
-rw-r--r-- | net/batman-adv/multicast.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c index 3feb9435b715..ec54e236e345 100644 --- a/net/batman-adv/multicast.c +++ b/net/batman-adv/multicast.c | |||
@@ -314,8 +314,6 @@ static void batadv_mcast_mla_list_free(struct hlist_head *mcast_list) | |||
314 | * translation table except the ones listed in the given mcast_list. | 314 | * translation table except the ones listed in the given mcast_list. |
315 | * | 315 | * |
316 | * If mcast_list is NULL then all are retracted. | 316 | * If mcast_list is NULL then all are retracted. |
317 | * | ||
318 | * Do not call outside of the mcast worker! (or cancel mcast worker first) | ||
319 | */ | 317 | */ |
320 | static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, | 318 | static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, |
321 | struct hlist_head *mcast_list) | 319 | struct hlist_head *mcast_list) |
@@ -323,8 +321,6 @@ static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, | |||
323 | struct batadv_hw_addr *mcast_entry; | 321 | struct batadv_hw_addr *mcast_entry; |
324 | struct hlist_node *tmp; | 322 | struct hlist_node *tmp; |
325 | 323 | ||
326 | WARN_ON(delayed_work_pending(&bat_priv->mcast.work)); | ||
327 | |||
328 | hlist_for_each_entry_safe(mcast_entry, tmp, &bat_priv->mcast.mla_list, | 324 | hlist_for_each_entry_safe(mcast_entry, tmp, &bat_priv->mcast.mla_list, |
329 | list) { | 325 | list) { |
330 | if (mcast_list && | 326 | if (mcast_list && |
@@ -348,8 +344,6 @@ static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, | |||
348 | * | 344 | * |
349 | * Adds multicast listener announcements from the given mcast_list to the | 345 | * Adds multicast listener announcements from the given mcast_list to the |
350 | * translation table if they have not been added yet. | 346 | * translation table if they have not been added yet. |
351 | * | ||
352 | * Do not call outside of the mcast worker! (or cancel mcast worker first) | ||
353 | */ | 347 | */ |
354 | static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv, | 348 | static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv, |
355 | struct hlist_head *mcast_list) | 349 | struct hlist_head *mcast_list) |
@@ -357,8 +351,6 @@ static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv, | |||
357 | struct batadv_hw_addr *mcast_entry; | 351 | struct batadv_hw_addr *mcast_entry; |
358 | struct hlist_node *tmp; | 352 | struct hlist_node *tmp; |
359 | 353 | ||
360 | WARN_ON(delayed_work_pending(&bat_priv->mcast.work)); | ||
361 | |||
362 | if (!mcast_list) | 354 | if (!mcast_list) |
363 | return; | 355 | return; |
364 | 356 | ||
@@ -647,7 +639,10 @@ static void batadv_mcast_mla_update(struct work_struct *work) | |||
647 | priv_mcast = container_of(delayed_work, struct batadv_priv_mcast, work); | 639 | priv_mcast = container_of(delayed_work, struct batadv_priv_mcast, work); |
648 | bat_priv = container_of(priv_mcast, struct batadv_priv, mcast); | 640 | bat_priv = container_of(priv_mcast, struct batadv_priv, mcast); |
649 | 641 | ||
642 | spin_lock(&bat_priv->mcast.mla_lock); | ||
650 | __batadv_mcast_mla_update(bat_priv); | 643 | __batadv_mcast_mla_update(bat_priv); |
644 | spin_unlock(&bat_priv->mcast.mla_lock); | ||
645 | |||
651 | batadv_mcast_start_timer(bat_priv); | 646 | batadv_mcast_start_timer(bat_priv); |
652 | } | 647 | } |
653 | 648 | ||