[v2] batman-adv: Fix broadcast/ogm queue limit on a removed interface

Message ID 1457701489-24562-1-git-send-email-sven@narfation.org (mailing list archive)
State Accepted, archived
Commit 289e386bcec0d469fc629019b349f47d17789911
Delegated to: Marek Lindner
Headers

Commit Message

Sven Eckelmann March 11, 2016, 1:04 p.m. UTC
  From: Linus Lüssing <linus.luessing@c0d3.blue>

When removing a single interface while a broadcast or ogm packet is
still pending then we will free the forward packet without releasing the
queue slots again.

This patch is supposed to fix this issue.

Fixes: d5bbce8465af ("batman-adv: Add missing hardif_free_ref in forw_packet_free")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
[sven@narfation.org: fix conflicts with current version]
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v2:
 - rebased patch

Patch was resurrected from https://patchwork.open-mesh.org/patch/2921/

I've requested an rebased version at
https://lists.open-mesh.org/pipermail/b.a.t.m.a.n/2016-March/014635.html
but done it myself because it was rather trivial.
---
 net/batman-adv/send.c | 6 ++++++
 1 file changed, 6 insertions(+)
  

Comments

Marek Lindner April 11, 2016, 10:51 a.m. UTC | #1
On Friday, March 11, 2016 14:04:49 Sven Eckelmann wrote:
> From: Linus Lüssing <linus.luessing@c0d3.blue>
> 
> When removing a single interface while a broadcast or ogm packet is
> still pending then we will free the forward packet without releasing the
> queue slots again.
> 
> This patch is supposed to fix this issue.
> 
> Fixes: d5bbce8465af ("batman-adv: Add missing hardif_free_ref in
> forw_packet_free") Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
> [sven@narfation.org: fix conflicts with current version]
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
> v2:
>  - rebased patch
> 
> Patch was resurrected from https://patchwork.open-mesh.org/patch/2921/
> 
> I've requested an rebased version at
> https://lists.open-mesh.org/pipermail/b.a.t.m.a.n/2016-March/014635.html
> but done it myself because it was rather trivial.
> ---
>  net/batman-adv/send.c | 6 ++++++
>  1 file changed, 6 insertions(+)

Applied in revision 289e386.

Thanks,
Marek
  

Patch

diff --git a/net/batman-adv/send.c b/net/batman-adv/send.c
index 3ce06e0..7641785 100644
--- a/net/batman-adv/send.c
+++ b/net/batman-adv/send.c
@@ -675,6 +675,9 @@  batadv_purge_outstanding_packets(struct batadv_priv *bat_priv,
 
 		if (pending) {
 			hlist_del(&forw_packet->list);
+			if (!forw_packet->own)
+				atomic_inc(&bat_priv->bcast_queue_left);
+
 			batadv_forw_packet_free(forw_packet);
 		}
 	}
@@ -702,6 +705,9 @@  batadv_purge_outstanding_packets(struct batadv_priv *bat_priv,
 
 		if (pending) {
 			hlist_del(&forw_packet->list);
+			if (!forw_packet->own)
+				atomic_inc(&bat_priv->batman_queue_left);
+
 			batadv_forw_packet_free(forw_packet);
 		}
 	}