[maint,1/2] batman-adv: Avoid nullptr dereference in bla after vlan_insert_tag

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

Commit Message

Sven Eckelmann July 2, 2016, 7:52 a.m. UTC
  vlan_insert_tag can return NULL on errors. The bridge loop avoidance code
therefore has to check the return value of vlan_insert_tag for NULL before
it can safely operate on this pointer.

Fixes: a9ce0dc43e2c ("batman-adv: add basic bridge loop avoidance code")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
 net/batman-adv/bridge_loop_avoidance.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Comments

Marek Lindner July 5, 2016, 8:52 a.m. UTC | #1
On Saturday, July 02, 2016 09:52:13 Sven Eckelmann wrote:
> vlan_insert_tag can return NULL on errors. The bridge loop avoidance code
> therefore has to check the return value of vlan_insert_tag for NULL before
> it can safely operate on this pointer.
> 
> Fixes: a9ce0dc43e2c ("batman-adv: add basic bridge loop avoidance code")
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
>  net/batman-adv/bridge_loop_avoidance.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)

Applied in revision e4cffba.

Thanks,
Marek
  

Patch

diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c
index e4f7494..5a41d61 100644
--- a/net/batman-adv/bridge_loop_avoidance.c
+++ b/net/batman-adv/bridge_loop_avoidance.c
@@ -419,9 +419,12 @@  static void batadv_bla_send_claim(struct batadv_priv *bat_priv, u8 *mac,
 		break;
 	}
 
-	if (vid & BATADV_VLAN_HAS_TAG)
+	if (vid & BATADV_VLAN_HAS_TAG) {
 		skb = vlan_insert_tag(skb, htons(ETH_P_8021Q),
 				      vid & VLAN_VID_MASK);
+		if (!skb)
+			goto out;
+	}
 
 	skb_reset_mac_header(skb);
 	skb->protocol = eth_type_trans(skb, soft_iface);