Unverified Commit 7c2e8449 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14158 be2net: fix potential memory leak in be_xmit()

parents a31db467 eef7ab13
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1385,10 +1385,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
	be_get_wrb_params_from_skb(adapter, skb, &wrb_params);

	wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params);
	if (unlikely(!wrb_cnt)) {
		dev_kfree_skb_any(skb);
		goto drop;
	}
	if (unlikely(!wrb_cnt))
		goto drop_skb;

	/* if os2bmc is enabled and if the pkt is destined to bmc,
	 * enqueue the pkt a 2nd time with mgmt bit set.
@@ -1397,7 +1395,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
		BE_WRB_F_SET(wrb_params.features, OS2BMC, 1);
		wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params);
		if (unlikely(!wrb_cnt))
			goto drop;
			goto drop_skb;
		else
			skb_get(skb);
	}
@@ -1411,6 +1409,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
		be_xmit_flush(adapter, txo);

	return NETDEV_TX_OK;
drop_skb:
	dev_kfree_skb_any(skb);
drop:
	tx_stats(txo)->tx_drv_drops++;
	/* Flush the already enqueued tx requests */