Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da6d6c7a authored by Marek Lindner's avatar Marek Lindner Committed by Greg Kroah-Hartman
Browse files

Staging: batman-adv: avoid crash on memory allocation error



skb_share_check() returns NULL if it can't allocate more memory but
it still frees the skbuff.

Signed-off-by: default avatarMarek Lindner <lindner_marek@yahoo.de>
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 8d03847c
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -428,8 +428,9 @@ int batman_skb_recv(struct sk_buff *skb, struct net_device *dev,

	skb = skb_share_check(skb, GFP_ATOMIC);

    if (skb == NULL)
		goto err_free;
	/* skb was released by skb_share_check() */
	if (!skb)
		goto err_out;

	/* packet should hold at least type and version */
	if (unlikely(skb_headlen(skb) < 2))
@@ -490,6 +491,7 @@ int batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
	default:
		ret = NET_RX_DROP;
	}

	if (ret == NET_RX_DROP)
		kfree_skb(skb);

@@ -501,8 +503,8 @@ int batman_skb_recv(struct sk_buff *skb, struct net_device *dev,

err_free:
	kfree_skb(skb);
err_out:
	return NET_RX_DROP;

}