summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Hundebøll <martin@hundeboll.net>2014-09-17 08:56:19 +0200
committerAntonio Quartulli <antonio@meshcoding.com>2015-01-07 17:21:57 +0100
commite0d9677ea387e386e9ce983f287d99b278ea4930 (patch)
treef45d251dcdda2a4f671246450d224f8f0b070f15
parent32db6aaafef317be799265a5be1840b28bee8c78 (diff)
batman-adv: clear control block of received socket buffers
Since other network components (and some drivers) uses the control block provided in skb's, the network coding feature might wrongly assume that an SKB has been decoded, and thus not try to code it with another packet again. This happens for instance when batman-adv is running on a bridge device. Fix this by clearing the control block for every received SKB. Introduced by 3c12de9a5c756b23fe7c9ab332474ece1568914c ("batman-adv: network coding - code and transmit packets if possible") Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
-rw-r--r--net/batman-adv/main.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
index d4079cd510f9..3bcd847a8f9f 100644
--- a/net/batman-adv/main.c
+++ b/net/batman-adv/main.c
@@ -402,6 +402,9 @@ int batadv_batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
goto err_free;
}
+ /* reset control block to avoid left overs from previous users */
+ memset(skb->cb, 0, sizeof(struct batadv_skb_cb));
+
/* all receive handlers return whether they received or reused
* the supplied skb. if not, we have to free the skb.
*/