All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] rose_dev: fix memcpy-bug in rose_set_mac_address
@ 2012-03-28  8:47 Daniel Borkmann
  2012-04-01 20:16 ` David Miller
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel Borkmann @ 2012-03-28  8:47 UTC (permalink / raw)
  To: David S. Miller; +Cc: Ralf Baechle, netdev

David Miller <davem@davemloft.net> wrote:

>> This patch fixes a small bug in rose_set_mac_address. If the current and new
>> MAC addresses match, then nothing needs to be done. However memcpy was used
>> instead of memcmp for comparison.
>>
>> The patch is against the latest net-tree.
>>
>> Signed-off-by: Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>
>
> You're breaking this code, not fixing it.
>
> If you don't keep the memcpy, then the calls right below which setup
> the loopback node will use the previous device address not the new
> one being configured.

David, thanks for your feedback! So here's a small rework of the patch:

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>
---
 net/rose/rose_dev.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c
index 178ff4f..2679507 100644
--- a/net/rose/rose_dev.c
+++ b/net/rose/rose_dev.c
@@ -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;
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] rose_dev: fix memcpy-bug in rose_set_mac_address
  2012-03-28  8:47 [PATCH] rose_dev: fix memcpy-bug in rose_set_mac_address Daniel Borkmann
@ 2012-04-01 20:16 ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2012-04-01 20:16 UTC (permalink / raw)
  To: danborkmann; +Cc: ralf, netdev

From: Daniel Borkmann <danborkmann@iogearbox.net>
Date: Wed, 28 Mar 2012 10:47:43 +0200

> 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>

Applied and queued up for -stable.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] rose_dev: fix memcpy-bug in rose_set_mac_address
  2012-03-27 13:27 Daniel Borkmann
@ 2012-03-28  2:49 ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2012-03-28  2:49 UTC (permalink / raw)
  To: danborkmann; +Cc: ralf, netdev

From: Daniel Borkmann <danborkmann@iogearbox.net>
Date: Tue, 27 Mar 2012 15:27:56 +0200

> This patch fixes a small bug in rose_set_mac_address. If the current and new
> MAC addresses match, then nothing needs to be done. However memcpy was used
> instead of memcmp for comparison.
> 
> The patch is against the latest net-tree.
> 
> Signed-off-by: Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>

You're breaking this code, not fixing it.

If you don't keep the memcpy, then the calls right below which setup
the loopback node will use the previous device address not the new
one being configured.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] rose_dev: fix memcpy-bug in rose_set_mac_address
@ 2012-03-27 13:27 Daniel Borkmann
  2012-03-28  2:49 ` David Miller
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel Borkmann @ 2012-03-27 13:27 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: David S. Miller, netdev

This patch fixes a small bug in rose_set_mac_address. If the current and new
MAC addresses match, then nothing needs to be done. However memcpy was used
instead of memcmp for comparison.

The patch is against the latest net-tree.

Signed-off-by: Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>
Cc: Ralf Baechle <ralf@linux-mips.org>
---
 net/rose/rose_dev.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c
index 178ff4f..3c5ce5e 100644
--- a/net/rose/rose_dev.c
+++ b/net/rose/rose_dev.c
@@ -96,7 +96,7 @@ 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) {

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-04-01 20:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-28  8:47 [PATCH] rose_dev: fix memcpy-bug in rose_set_mac_address Daniel Borkmann
2012-04-01 20:16 ` David Miller
  -- strict thread matches above, loose matches on Subject: below --
2012-03-27 13:27 Daniel Borkmann
2012-03-28  2:49 ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.