[U-Boot] [PATCH] sh_eth.c: EDMAC descriptor leak

Yoshinori Sato ysato at users.sourceforge.jp
Mon May 16 07:24:11 CEST 2011


Hi,

I found memory leak in sh_eth.c.
sh_eth_desc_init call for many times in network problem.
And it every time allocate new descriptor. So leak old descriptor.

I will fix this patch.

diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index 17dd0d2..f805785 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -313,6 +313,9 @@ static int sh_eth_tx_desc_init(struct sh_eth_dev *eth)
 	struct sh_eth_info *port_info = &eth->port_info[port];
 	struct tx_desc_s *cur_tx_desc;
 
+	if (port_info->tx_desc_malloc)
+		/* Already allocated. re-using it */
+		return 0;
 	/*
 	 * Allocate tx descriptors. They must be TX_DESC_SIZE bytes aligned
 	 */
@@ -365,6 +368,9 @@ static int sh_eth_rx_desc_init(struct sh_eth_dev *eth)
 	u32 tmp_addr;
 	u8 *rx_buf;
 
+	if (port_info->rx_desc_malloc)
+		/* Already allocated. re-using it */
+		return 0;
 	/*
 	 * Allocate rx descriptors. They must be RX_DESC_SIZE bytes aligned
 	 */

-- 
Yoshinori Sato
<ysato at users.sourceforge.jp>


More information about the U-Boot mailing list