rose_dev: fix memcpy-bug in rose_set_mac_address
[ Upstream commit 81213b5e8a ]
If both addresses equal, nothing needs to be done. If the device is down,
then we simply copy the new address to dev->dev_addr. If the device is up,
then we add another loopback device with the new address, and if that does
not fail, we remove the loopback device with the old address. And only
then, we update the dev->dev_addr.
Signed-off-by: Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
62a48bcddf
commit
cea90bebaa
1 changed files with 2 additions and 2 deletions
|
|
@ -96,11 +96,11 @@ static int rose_set_mac_address(struct net_device *dev, void *addr)
|
|||
struct sockaddr *sa = addr;
|
||||
int err;
|
||||
|
||||
if (!memcpy(dev->dev_addr, sa->sa_data, dev->addr_len))
|
||||
if (!memcmp(dev->dev_addr, sa->sa_data, dev->addr_len))
|
||||
return 0;
|
||||
|
||||
if (dev->flags & IFF_UP) {
|
||||
err = rose_add_loopback_node((rose_address *)dev->dev_addr);
|
||||
err = rose_add_loopback_node((rose_address *)sa->sa_data);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue