瀏覽代碼

net: e1000: Add initialized eth_device & e1000_hw structure

nic and hw structures are allocated via malloc i.e. return memory
is not zero initialized. Because of this few structure member like
"function pointers" are initialized with garbage values.

It may cause problem. for eg. during eth_initialize, dev->write_hwaddr
is used.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

Fixed typo.
Signed-off-by: Wolfgang Denk <wd@denx.de>
Kumar Gala 14 年之前
父節點
當前提交
4b29bdb0ed
共有 1 個文件被更改,包括 14 次插入0 次删除
  1. 14 0
      drivers/net/e1000.c

+ 14 - 0
drivers/net/e1000.c

@@ -5177,7 +5177,21 @@ e1000_initialize(bd_t * bis)
 		}
 
 		nic = (struct eth_device *) malloc(sizeof (*nic));
+		if (!nic) {
+			printf("Error: e1000 - Can not alloc memory\n");
+			return 0;
+		}
+
 		hw = (struct e1000_hw *) malloc(sizeof (*hw));
+		if (!hw) {
+			free(nic);
+			printf("Error: e1000 - Can not alloc memory\n");
+			return 0;
+		}
+
+		memset(nic, 0, sizeof(*dev));
+		memset(hw, 0, sizeof(*hw));
+
 		hw->pdev = devno;
 		nic->priv = hw;