net: e1000: Add initialized eth_device & e1000_hw structure
authorKumar Gala <galak@kernel.crashing.org>
Fri, 12 Nov 2010 10:13:06 +0000 (04:13 -0600)
committerWolfgang Denk <wd@denx.de>
Sun, 14 Nov 2010 22:24:37 +0000 (23:24 +0100)
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>
drivers/net/e1000.c

index 2825342ff5290980ba9dc4ce554c8d6c25b7a950..18584efdd53204aede763c8f6efa0acd62c58290 100644 (file)
@@ -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;