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

Commit a7807d73 authored by Jukka Rissanen's avatar Jukka Rissanen Committed by Johan Hedberg
Browse files

Bluetooth: 6lowpan: Avoid memory leak if memory allocation fails



If skb_unshare() returns NULL, then we leak the original skb.
Solution is to use temp variable to hold the new skb.

Signed-off-by: default avatarJukka Rissanen <jukka.rissanen@linux.intel.com>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent fc12518a
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -589,13 +589,17 @@ static netdev_tx_t bt_xmit(struct sk_buff *skb, struct net_device *netdev)
	int err = 0;
	bdaddr_t addr;
	u8 addr_type;
	struct sk_buff *tmpskb;

	/* We must take a copy of the skb before we modify/replace the ipv6
	 * header as the header could be used elsewhere
	 */
	skb = skb_unshare(skb, GFP_ATOMIC);
	if (!skb)
	tmpskb = skb_unshare(skb, GFP_ATOMIC);
	if (!tmpskb) {
		kfree_skb(skb);
		return NET_XMIT_DROP;
	}
	skb = tmpskb;

	/* Return values from setup_header()
	 *  <0 - error, packet is dropped