summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/intel/e100.c
diff options
context:
space:
mode:
authorWang Hai <wanghai38@huawei.com>2022-11-16 01:24:07 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-12-08 11:28:39 +0100
commit9fc27d22cdb9b1fcd754599d216a8992fed280cd (patch)
tree18a857f684d827bace63520ebb45d254f2868f6b /drivers/net/ethernet/intel/e100.c
parent0d9f5bd54b913018031c5b964fc1f9a31f5f6cb5 (diff)
e100: Fix possible use after free in e100_xmit_prepare
[ Upstream commit 45605c75c52c7ae7bfe902214343aabcfe5ba0ff ] In e100_xmit_prepare(), if we can't map the skb, then return -ENOMEM, so e100_xmit_frame() will return NETDEV_TX_BUSY and the upper layer will resend the skb. But the skb is already freed, which will cause UAF bug when the upper layer resends the skb. Remove the harmful free. Fixes: 5e5d49422dfb ("e100: Release skb when DMA mapping is failed in e100_xmit_prepare") Signed-off-by: Wang Hai <wanghai38@huawei.com> Reviewed-by: Alexander Duyck <alexanderduyck@fb.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/intel/e100.c')
-rw-r--r--drivers/net/ethernet/intel/e100.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c
index 36d52246bdc6..8cd371437c99 100644
--- a/drivers/net/ethernet/intel/e100.c
+++ b/drivers/net/ethernet/intel/e100.c
@@ -1742,11 +1742,8 @@ static int e100_xmit_prepare(struct nic *nic, struct cb *cb,
dma_addr = dma_map_single(&nic->pdev->dev, skb->data, skb->len,
DMA_TO_DEVICE);
/* If we can't map the skb, have the upper layer try later */
- if (dma_mapping_error(&nic->pdev->dev, dma_addr)) {
- dev_kfree_skb_any(skb);
- skb = NULL;
+ if (dma_mapping_error(&nic->pdev->dev, dma_addr))
return -ENOMEM;
- }
/*
* Use the last 4 bytes of the SKB payload packet as the CRC, used for