1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- From e10a35abb3da12b812cfb6fc6137926a0c81e39a Mon Sep 17 00:00:00 2001
- From: Daniel Golle <[email protected]>
- Date: Sun, 10 Sep 2023 22:40:30 +0100
- Subject: [PATCH] net: ethernet: mtk_eth_soc: fix uninitialized variable
- Variable dma_addr in function mtk_poll_rx can be uninitialized on
- some of the error paths. In practise this doesn't matter, even random
- data present in uninitialized stack memory can safely be used in the
- way it happens in the error path.
- However, in order to make Smatch happy make sure the variable is
- always initialized.
- Signed-off-by: Daniel Golle <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
- --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
- +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
- @@ -1988,11 +1988,11 @@ static int mtk_poll_rx(struct napi_struc
- u8 *data, *new_data;
- struct mtk_rx_dma_v2 *rxd, trxd;
- int done = 0, bytes = 0;
- + dma_addr_t dma_addr = DMA_MAPPING_ERROR;
-
- while (done < budget) {
- unsigned int pktlen, *rxdcsum;
- struct net_device *netdev;
- - dma_addr_t dma_addr;
- u32 hash, reason;
- int mac = 0;
-
- @@ -2169,7 +2169,8 @@ release_desc:
- else
- rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size);
-
- - if (MTK_HAS_CAPS(eth->soc->caps, MTK_36BIT_DMA))
- + if (MTK_HAS_CAPS(eth->soc->caps, MTK_36BIT_DMA) &&
- + likely(dma_addr != DMA_MAPPING_ERROR))
- rxd->rxd2 |= RX_DMA_PREP_ADDR64(dma_addr);
-
- ring->calc_idx = idx;
|