|
@@ -1170,7 +1170,7 @@ static void *nixge_get_nvmem_address(struct device *dev)
|
|
|
|
|
|
cell = nvmem_cell_get(dev, "address");
|
|
cell = nvmem_cell_get(dev, "address");
|
|
if (IS_ERR(cell))
|
|
if (IS_ERR(cell))
|
|
- return cell;
|
|
|
|
|
|
+ return NULL;
|
|
|
|
|
|
mac = nvmem_cell_read(cell, &cell_size);
|
|
mac = nvmem_cell_read(cell, &cell_size);
|
|
nvmem_cell_put(cell);
|
|
nvmem_cell_put(cell);
|
|
@@ -1202,10 +1202,12 @@ static int nixge_probe(struct platform_device *pdev)
|
|
ndev->max_mtu = NIXGE_JUMBO_MTU;
|
|
ndev->max_mtu = NIXGE_JUMBO_MTU;
|
|
|
|
|
|
mac_addr = nixge_get_nvmem_address(&pdev->dev);
|
|
mac_addr = nixge_get_nvmem_address(&pdev->dev);
|
|
- if (mac_addr && is_valid_ether_addr(mac_addr))
|
|
|
|
|
|
+ if (mac_addr && is_valid_ether_addr(mac_addr)) {
|
|
ether_addr_copy(ndev->dev_addr, mac_addr);
|
|
ether_addr_copy(ndev->dev_addr, mac_addr);
|
|
- else
|
|
|
|
|
|
+ kfree(mac_addr);
|
|
|
|
+ } else {
|
|
eth_hw_addr_random(ndev);
|
|
eth_hw_addr_random(ndev);
|
|
|
|
+ }
|
|
|
|
|
|
priv = netdev_priv(ndev);
|
|
priv = netdev_priv(ndev);
|
|
priv->ndev = ndev;
|
|
priv->ndev = ndev;
|