Skip to content

Commit e4dd8bf

Browse files
Wang Hailunn
authored andcommitted
be2net: fix potential memory leak in be_xmit()
The be_xmit() returns NETDEV_TX_OK without freeing skb in case of be_xmit_enqueue() fails, add dev_kfree_skb_any() to fix it. Fixes: 760c295 ("be2net: Support for OS2BMC.") Signed-off-by: Wang Hai <[email protected]> Reviewed-by: Simon Horman <[email protected]> Reviewed-by: Kalesh AP <[email protected]> Message-ID: <[email protected]> Signed-off-by: Andrew Lunn <[email protected]>
1 parent 2cb3f56 commit e4dd8bf

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

drivers/net/ethernet/emulex/benet/be_main.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,10 +1381,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
13811381
be_get_wrb_params_from_skb(adapter, skb, &wrb_params);
13821382

13831383
wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params);
1384-
if (unlikely(!wrb_cnt)) {
1385-
dev_kfree_skb_any(skb);
1386-
goto drop;
1387-
}
1384+
if (unlikely(!wrb_cnt))
1385+
goto drop_skb;
13881386

13891387
/* if os2bmc is enabled and if the pkt is destined to bmc,
13901388
* enqueue the pkt a 2nd time with mgmt bit set.
@@ -1393,7 +1391,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
13931391
BE_WRB_F_SET(wrb_params.features, OS2BMC, 1);
13941392
wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params);
13951393
if (unlikely(!wrb_cnt))
1396-
goto drop;
1394+
goto drop_skb;
13971395
else
13981396
skb_get(skb);
13991397
}
@@ -1407,6 +1405,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
14071405
be_xmit_flush(adapter, txo);
14081406

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

0 commit comments

Comments
 (0)