Messages in this thread | | | Subject | Re: [PATCH net] net: nixge: fix potential memory leak in nixge_start_xmit() | From | Zhang Changzhong <> | Date | Tue, 15 Nov 2022 21:20:44 +0800 |
| |
On 2022/11/14 18:40, Francois Romieu wrote: > Zhang Changzhong <zhangchangzhong@huawei.com> : >> The nixge_start_xmit() returns NETDEV_TX_OK but does not free skb on two >> error handling cases, which can lead to memory leak. >> >> To fix this, return NETDEV_TX_BUSY in case of nixge_check_tx_bd_space() >> fails and add dev_kfree_skb_any() in case of dma_map_single() fails. > > This patch merge two unrelated changes. Please split. > >> Fixes: 492caffa8a1a ("net: ethernet: nixge: Add support for National Instruments XGE netdev") >> Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com> >> --- >> drivers/net/ethernet/ni/nixge.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/net/ethernet/ni/nixge.c b/drivers/net/ethernet/ni/nixge.c >> index 19d043b593cc..b9091f9bbc77 100644 >> --- a/drivers/net/ethernet/ni/nixge.c >> +++ b/drivers/net/ethernet/ni/nixge.c >> @@ -521,13 +521,15 @@ static netdev_tx_t nixge_start_xmit(struct sk_buff *skb, >> if (nixge_check_tx_bd_space(priv, num_frag)) { >> if (!netif_queue_stopped(ndev)) >> netif_stop_queue(ndev); >> - return NETDEV_TX_OK; >> + return NETDEV_TX_BUSY; >> } > > The driver should probably check the available room before returning > from hard_start_xmit and turn the check above unlikely(). > > Btw there is no lock and the Tx completion is irq driven: the driver > is racy. :o( >
Hi Francois,
Thanks for you review. I'll make v2 according to your suggestion.
Changzhong
| |