diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2015-10-07 21:45:42 -0700 |
---|---|---|
committer | Joe Hershberger <joe.hershberger@ni.com> | 2015-10-29 14:05:51 -0500 |
commit | a16edabe7f744b2d7a97bba4d4bc95b6894fd592 (patch) | |
tree | 557ab362dfb12072c5066bed1802cce3e0ed6b47 /net | |
parent | 50dae85c713e11c52abf25dfd283db336257dbc5 (diff) |
net: eth: Clear MAC address in eth_pre_remove()
platdata->enetaddr was assigned to a value in dev_probe() last time.
If we don't clear it, for dev_probe() at the second time, dm eth
will end up treating it as a MAC address from ROM no matter where it
came from originally (maybe env, ROM, or even random). Fix this by
clearing platdata->enetaddr when removing an Ethernet device.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/eth.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/eth.c b/net/eth.c index b978aae1016..c661775d1ca 100644 --- a/net/eth.c +++ b/net/eth.c @@ -575,8 +575,13 @@ static int eth_post_probe(struct udevice *dev) static int eth_pre_remove(struct udevice *dev) { + struct eth_pdata *pdata = dev->platdata; + eth_get_ops(dev)->stop(dev); + /* clear the MAC address */ + memset(pdata->enetaddr, 0, 6); + return 0; } |