Skip to content

Commit

Permalink
rose_dev: fix memcpy-bug in rose_set_mac_address
Browse files Browse the repository at this point in the history
[ Upstream commit 81213b5 ]

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>
  • Loading branch information
borkmann authored and gregkh committed Apr 13, 2012
1 parent 62a48bc commit cea90be
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions net/rose/rose_dev.c
Expand Up @@ -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;

Expand Down

0 comments on commit cea90be

Please sign in to comment.