linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL
@ 2012-02-24 16:01 Danny Kukawka
  2012-02-24 16:01 ` [PATCH 01/12] ethernet: .ndo_set_mac_address: check given " Danny Kukawka
                   ` (12 more replies)
  0 siblings, 13 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: David S. Miller, Andy Gospodarek, Guo-Fu Tseng, Petko Manolov,
	VMware, Inc.,
	John W. Linville, linux390, Mauro Carvalho Chehab
  Cc: Danny Kukawka, Stephen Hemminger, Joe Perches, Jeff Kirsher,
	Jiri Pirko, netdev, linux-usb, linux-wireless, libertas-dev,
	linux-kernel, linux-media, linux-s390, linux-hams, linux-mips

Second Part of series patches to unifiy the return value of 
.ndo_set_mac_address if the given address isn't valid.

These changes check if a given (MAC) address is valid in 
.ndo_set_mac_address, if invalid return -EADDRNOTAVAIL 
as eth_mac_addr() already does if is_valid_ether_addr() fails.

These patches are against net-next.

Danny Kukawka (12):
  ethernet: .ndo_set_mac_address: check given address, if invalid
    return -EADDRNOTAVAIL
  cris/eth_v10: check given MAC address, if invalid return
    -EADDRNOTAVAIL
  dvb_net: check given MAC address, if invalid return -EADDRNOTAVAIL
  fddi/skfp: check given MAC address, if invalid return -EADDRNOTAVAIL
  team: check given MAC address, if invalid return -EADDRNOTAVAIL
  tokenring: check given MAC address, if invalid return -EADDRNOTAVAIL
  usb/rtl8150: check given MAC address, if invalid return
    -EADDRNOTAVAIL
  vmxnet3: check given MAC address, if invalid return -EADDRNOTAVAIL
  wan/lapbether: check given MAC address, if invalid return
    -EADDRNOTAVAIL
  wireless: check given MAC address, if invalid return -EADDRNOTAVAIL
  s390/net/qeth_l2_main: check given MAC address, if invalid return
    -EADDRNOTAVAIL
  rose: check given MAC address, if invalid return -EADDRNOTAVAIL

 drivers/media/dvb/dvb-core/dvb_net.c               |    5 ++++-
 drivers/net/cris/eth_v10.c                         |    3 +++
 drivers/net/ethernet/amd/amd8111e.c                |    3 +++
 drivers/net/ethernet/amd/atarilance.c              |    3 +++
 drivers/net/ethernet/chelsio/cxgb/cxgb2.c          |    3 +++
 drivers/net/ethernet/cisco/enic/enic_main.c        |    3 +++
 drivers/net/ethernet/freescale/fec_mpc52xx.c       |    3 +++
 drivers/net/ethernet/jme.c                         |    3 +++
 drivers/net/ethernet/micrel/ks8851_mll.c           |    3 +++
 drivers/net/ethernet/micrel/ksz884x.c              |    3 +++
 drivers/net/ethernet/seeq/sgiseeq.c                |    3 +++
 drivers/net/ethernet/sgi/ioc3-eth.c                |    3 +++
 drivers/net/ethernet/tehuti/tehuti.c               |    3 +++
 drivers/net/fddi/skfp/skfddi.c                     |    3 +++
 drivers/net/team/team.c                            |    3 +++
 drivers/net/tokenring/3c359.c                      |    4 ++++
 drivers/net/tokenring/lanstreamer.c                |    4 ++++
 drivers/net/tokenring/olympic.c                    |    4 ++++
 drivers/net/tokenring/tms380tr.c                   |    3 +++
 drivers/net/usb/rtl8150.c                          |    3 +++
 drivers/net/vmxnet3/vmxnet3_drv.c                  |    3 +++
 drivers/net/wan/lapbether.c                        |    5 +++++
 drivers/net/wireless/airo.c                        |    3 +++
 drivers/net/wireless/atmel.c                       |    3 +++
 .../net/wireless/brcm80211/brcmfmac/dhd_linux.c    |    5 ++++-
 drivers/net/wireless/hostap/hostap_main.c          |    3 +++
 drivers/net/wireless/libertas/main.c               |    3 +++
 drivers/net/wireless/mwifiex/main.c                |    3 +++
 drivers/net/wireless/zd1201.c                      |    2 ++
 drivers/s390/net/qeth_l2_main.c                    |    3 +++
 net/rose/rose_dev.c                                |    3 +++
 31 files changed, 99 insertions(+), 2 deletions(-)

-- 
1.7.8.3


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

* [PATCH 01/12] ethernet: .ndo_set_mac_address: check given address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 02/12] cris/eth_v10: check given MAC " Danny Kukawka
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Christian Benvenuti, Roopa Prabhu, Neel Patel, Nishank Trivedi,
	Guo-Fu Tseng, Ralf Baechle, Andy Gospodarek
  Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel, linux-mips

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/amd/amd8111e.c          |    3 +++
 drivers/net/ethernet/amd/atarilance.c        |    3 +++
 drivers/net/ethernet/chelsio/cxgb/cxgb2.c    |    3 +++
 drivers/net/ethernet/cisco/enic/enic_main.c  |    3 +++
 drivers/net/ethernet/freescale/fec_mpc52xx.c |    3 +++
 drivers/net/ethernet/jme.c                   |    3 +++
 drivers/net/ethernet/micrel/ks8851_mll.c     |    3 +++
 drivers/net/ethernet/micrel/ksz884x.c        |    3 +++
 drivers/net/ethernet/seeq/sgiseeq.c          |    3 +++
 drivers/net/ethernet/sgi/ioc3-eth.c          |    3 +++
 drivers/net/ethernet/tehuti/tehuti.c         |    3 +++
 11 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/amd/amd8111e.c b/drivers/net/ethernet/amd/amd8111e.c
index 9f62504..b0e3603 100644
--- a/drivers/net/ethernet/amd/amd8111e.c
+++ b/drivers/net/ethernet/amd/amd8111e.c
@@ -1549,6 +1549,9 @@ static int amd8111e_set_mac_address(struct net_device *dev, void *p)
 	int i;
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
 	spin_lock_irq(&lp->lock);
 	/* Setting the MAC address to the device */
diff --git a/drivers/net/ethernet/amd/atarilance.c b/drivers/net/ethernet/amd/atarilance.c
index 70ed79c..a9612f7 100644
--- a/drivers/net/ethernet/amd/atarilance.c
+++ b/drivers/net/ethernet/amd/atarilance.c
@@ -1125,6 +1125,9 @@ static int lance_set_mac_address( struct net_device *dev, void *addr )
 	struct sockaddr *saddr = addr;
 	int i;
 
+	if (!is_valid_ether_addr(saddr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (lp->cardtype != OLD_RIEBL && lp->cardtype != NEW_RIEBL)
 		return -EOPNOTSUPP;
 
diff --git a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c
index 1d17c92..8e363ce 100644
--- a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c
+++ b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c
@@ -841,6 +841,9 @@ static int t1_set_mac_addr(struct net_device *dev, void *p)
 	struct cmac *mac = adapter->port[dev->if_port].mac;
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (!mac->ops->macaddress_set)
 		return -EOPNOTSUPP;
 
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index e27ec1d..67a340d 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -903,6 +903,9 @@ static int enic_set_mac_address(struct net_device *netdev, void *p)
 	struct enic *enic = netdev_priv(netdev);
 	int err;
 
+	if (!is_valid_ether_addr(saddr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	err = enic_dev_del_station_addr(enic);
 	if (err)
 		return err;
diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c
index 7b34d8c..26ea3ad 100644
--- a/drivers/net/ethernet/freescale/fec_mpc52xx.c
+++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c
@@ -123,6 +123,9 @@ static int mpc52xx_fec_set_mac_address(struct net_device *dev, void *addr)
 {
 	struct sockaddr *sock = addr;
 
+	if (!is_valid_ether_addr(sock->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(dev->dev_addr, sock->sa_data, dev->addr_len);
 
 	mpc52xx_fec_set_paddr(dev, sock->sa_data);
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index 1b86d0b..117598e 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -2271,6 +2271,9 @@ jme_set_macaddr(struct net_device *netdev, void *p)
 	struct jme_adapter *jme = netdev_priv(netdev);
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (netif_running(netdev))
 		return -EBUSY;
 
diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
index 10d5798..82430ff 100644
--- a/drivers/net/ethernet/micrel/ks8851_mll.c
+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
@@ -1239,6 +1239,9 @@ static int ks_set_mac_address(struct net_device *netdev, void *paddr)
 	struct sockaddr *addr = paddr;
 	u8 *da;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	netdev->addr_assign_type &= ~NET_ADDR_RANDOM;
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
 
diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c
index ef723b1..db29407 100644
--- a/drivers/net/ethernet/micrel/ksz884x.c
+++ b/drivers/net/ethernet/micrel/ksz884x.c
@@ -5668,6 +5668,9 @@ static int netdev_set_mac_address(struct net_device *dev, void *addr)
 	struct sockaddr *mac = addr;
 	uint interrupt;
 
+	if (!is_valid_ether_addr(mac->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (priv->port.first_port > 0)
 		hw_del_addr(hw, dev->dev_addr);
 	else {
diff --git a/drivers/net/ethernet/seeq/sgiseeq.c b/drivers/net/ethernet/seeq/sgiseeq.c
index bb8c822..41ad6ba 100644
--- a/drivers/net/ethernet/seeq/sgiseeq.c
+++ b/drivers/net/ethernet/seeq/sgiseeq.c
@@ -163,6 +163,9 @@ static int sgiseeq_set_mac_address(struct net_device *dev, void *addr)
 	struct sgiseeq_private *sp = netdev_priv(dev);
 	struct sockaddr *sa = addr;
 
+	if (!is_valid_ether_addr(sa->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
 
 	spin_lock_irq(&sp->tx_lock);
diff --git a/drivers/net/ethernet/sgi/ioc3-eth.c b/drivers/net/ethernet/sgi/ioc3-eth.c
index ac149d9..a069546 100644
--- a/drivers/net/ethernet/sgi/ioc3-eth.c
+++ b/drivers/net/ethernet/sgi/ioc3-eth.c
@@ -458,6 +458,9 @@ static int ioc3_set_mac_address(struct net_device *dev, void *addr)
 	struct ioc3_private *ip = netdev_priv(dev);
 	struct sockaddr *sa = addr;
 
+	if (!is_valid_ether_addr(sa->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
 
 	spin_lock_irq(&ip->ioc3_lock);
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
index ad973ff..30822ac 100644
--- a/drivers/net/ethernet/tehuti/tehuti.c
+++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -837,6 +837,9 @@ static int bdx_set_mac(struct net_device *ndev, void *p)
 	struct sockaddr *addr = p;
 
 	ENTER;
+
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
 	/*
 	   if (netif_running(dev))
 	   return -EBUSY
-- 
1.7.8.3


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

* [PATCH 02/12] cris/eth_v10: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
  2012-02-24 16:01 ` [PATCH 01/12] ethernet: .ndo_set_mac_address: check given " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-25 17:18   ` Jesper Nilsson
  2012-02-24 16:01 ` [PATCH 03/12] dvb_net: " Danny Kukawka
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, Lucas De Marchi, Javier Martinez Canillas,
	Jiri Pirko, netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/cris/eth_v10.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index 7cb2785..e450d8a 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -424,6 +424,9 @@ e100_set_mac_address(struct net_device *dev, void *p)
 	struct net_local *np = netdev_priv(dev);
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	spin_lock(&np->lock); /* preemption protection */
 
 	/* remember it */
-- 
1.7.8.3


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

* [PATCH 03/12] dvb_net: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
  2012-02-24 16:01 ` [PATCH 01/12] ethernet: .ndo_set_mac_address: check given " Danny Kukawka
  2012-02-24 16:01 ` [PATCH 02/12] cris/eth_v10: check given MAC " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 04/12] fddi/skfp: " Danny Kukawka
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Danny Kukawka, David S. Miller, Jonathan Nieder, Jiri Pirko,
	linux-media, linux-kernel

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/media/dvb/dvb-core/dvb_net.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
index 8766ce8..ebae67e 100644
--- a/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/drivers/media/dvb/dvb-core/dvb_net.c
@@ -1190,7 +1190,10 @@ static void wq_restart_net_feed (struct work_struct *work)
 static int dvb_net_set_mac (struct net_device *dev, void *p)
 {
 	struct dvb_net_priv *priv = netdev_priv(dev);
-	struct sockaddr *addr=p;
+	struct sockaddr *addr = p;
+
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
 
-- 
1.7.8.3


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

* [PATCH 04/12] fddi/skfp: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (2 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 03/12] dvb_net: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 05/12] team: " Danny Kukawka
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, Jeff Kirsher, Jiri Pirko, netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/fddi/skfp/skfddi.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/fddi/skfp/skfddi.c b/drivers/net/fddi/skfp/skfddi.c
index 3d9a459..1092d94 100644
--- a/drivers/net/fddi/skfp/skfddi.c
+++ b/drivers/net/fddi/skfp/skfddi.c
@@ -81,6 +81,7 @@ static const char * const boot_msg =
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/netdevice.h>
+#include <linux/etherdevice.h>
 #include <linux/fddidevice.h>
 #include <linux/skbuff.h>
 #include <linux/bitops.h>
@@ -926,6 +927,8 @@ static int skfp_ctl_set_mac_address(struct net_device *dev, void *addr)
 	skfddi_priv *bp = &smc->os;
 	unsigned long Flags;
 
+	if (!is_valid_ether_addr(p_sockaddr->sa_data))
+		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, p_sockaddr->sa_data, FDDI_K_ALEN);
 	spin_lock_irqsave(&bp->DriverLock, Flags);
-- 
1.7.8.3


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

* [PATCH 05/12] team: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (3 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 04/12] fddi/skfp: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-26  0:07   ` Jiri Pirko
  2012-02-24 16:01 ` [PATCH 06/12] tokenring: " Danny Kukawka
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Jiri Pirko; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/team/team.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 8f81805..788650c 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -868,6 +868,9 @@ static int team_set_mac_address(struct net_device *dev, void *p)
 	struct team_port *port;
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	dev->addr_assign_type &= ~NET_ADDR_RANDOM;
 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
 	rcu_read_lock();
-- 
1.7.8.3


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

* [PATCH 06/12] tokenring: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (4 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 05/12] team: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 07/12] usb/rtl8150: " Danny Kukawka
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, Joe Perches, Lucas De Marchi, Weiping Pan,
	Jiri Pirko, Alexey Dobriyan, netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/tokenring/3c359.c       |    4 ++++
 drivers/net/tokenring/lanstreamer.c |    4 ++++
 drivers/net/tokenring/olympic.c     |    4 ++++
 drivers/net/tokenring/tms380tr.c    |    3 +++
 4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/drivers/net/tokenring/3c359.c b/drivers/net/tokenring/3c359.c
index d7c292a..3b7034f 100644
--- a/drivers/net/tokenring/3c359.c
+++ b/drivers/net/tokenring/3c359.c
@@ -56,6 +56,7 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/netdevice.h>
+#include <linux/etherdevice.h>
 #include <linux/trdevice.h>
 #include <linux/stddef.h>
 #include <linux/init.h>
@@ -1498,6 +1499,9 @@ static int xl_set_mac_address (struct net_device *dev, void *addr)
 	struct sockaddr *saddr = addr ; 
 	struct xl_private *xl_priv = netdev_priv(dev);
 
+	if (!is_valid_ether_addr(saddr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (netif_running(dev)) { 
 		printk(KERN_WARNING "%s: Cannot set mac/laa address while card is open\n", dev->name) ; 
 		return -EIO ; 
diff --git a/drivers/net/tokenring/lanstreamer.c b/drivers/net/tokenring/lanstreamer.c
index 8d71e0d..bec9290 100644
--- a/drivers/net/tokenring/lanstreamer.c
+++ b/drivers/net/tokenring/lanstreamer.c
@@ -113,6 +113,7 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/netdevice.h>
+#include <linux/etherdevice.h>
 #include <linux/trdevice.h>
 #include <linux/stddef.h>
 #include <linux/init.h>
@@ -1488,6 +1489,9 @@ static int streamer_set_mac_address(struct net_device *dev, void *addr)
 	struct sockaddr *saddr = addr;
 	struct streamer_private *streamer_priv = netdev_priv(dev);
 
+	if (!is_valid_ether_addr(saddr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (netif_running(dev)) 
 	{
 		printk(KERN_WARNING "%s: Cannot set mac/laa address while card is open\n", dev->name);
diff --git a/drivers/net/tokenring/olympic.c b/drivers/net/tokenring/olympic.c
index fd8dce9..f41eb41 100644
--- a/drivers/net/tokenring/olympic.c
+++ b/drivers/net/tokenring/olympic.c
@@ -94,6 +94,7 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/netdevice.h>
+#include <linux/etherdevice.h>
 #include <linux/trdevice.h>
 #include <linux/stddef.h>
 #include <linux/init.h>
@@ -1351,6 +1352,9 @@ static int olympic_set_mac_address (struct net_device *dev, void *addr)
 	struct sockaddr *saddr = addr ; 
 	struct olympic_private *olympic_priv = netdev_priv(dev);
 
+	if (!is_valid_ether_addr(saddr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (netif_running(dev)) { 
 		printk(KERN_WARNING "%s: Cannot set mac/laa address while card is open\n", dev->name) ; 
 		return -EIO ; 
diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c
index 102f896..3880315 100644
--- a/drivers/net/tokenring/tms380tr.c
+++ b/drivers/net/tokenring/tms380tr.c
@@ -2203,6 +2203,9 @@ static int tms380tr_set_mac_address(struct net_device *dev, void *addr)
 {
 	struct net_local *tp = netdev_priv(dev);
 	struct sockaddr *saddr = addr;
+
+	if (!is_valid_ether_addr(saddr->sa_data))
+		return -EADDRNOTAVAIL;
 	
 	if (tp->AdapterOpenFlag || tp->AdapterVirtOpenFlag) {
 		printk(KERN_WARNING "%s: Cannot set MAC/LAA address while card is open\n", dev->name);
-- 
1.7.8.3


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

* [PATCH 07/12] usb/rtl8150: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (5 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 06/12] tokenring: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 08/12] vmxnet3: " Danny Kukawka
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Petko Manolov
  Cc: Danny Kukawka, Greg Kroah-Hartman, David S. Miller, linux-usb,
	netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address/
rtl8150_set_mac_address(), if invalid return -EADDRNOTAVAIL as
eth_mac_addr() already does if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/usb/rtl8150.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
index 6dda2fe..aa539be 100644
--- a/drivers/net/usb/rtl8150.c
+++ b/drivers/net/usb/rtl8150.c
@@ -299,6 +299,9 @@ static int rtl8150_set_mac_address(struct net_device *netdev, void *p)
 	if (netif_running(netdev))
 		return -EBUSY;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
 	dbg("%s: Setting MAC address to %pM\n", netdev->name, netdev->dev_addr);
 	/* Set the IDR registers. */
-- 
1.7.8.3


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

* [PATCH 08/12] vmxnet3: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (6 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 07/12] usb/rtl8150: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:31   ` [Pv-drivers] " Bhavesh Davda
  2012-02-24 16:01 ` [PATCH 09/12] wan/lapbether: " Danny Kukawka
                   ` (4 subsequent siblings)
  12 siblings, 1 reply; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Shreyas Bhatewara, VMware, Inc.
  Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address/
vmxnet3_set_mac_addr(), if invalid return -EADDRNOTAVAIL as
eth_mac_addr() already does if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/vmxnet3/vmxnet3_drv.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index e1562e8..bd2a7cd 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2331,6 +2331,9 @@ vmxnet3_set_mac_addr(struct net_device *netdev, void *p)
 	struct sockaddr *addr = p;
 	struct vmxnet3_adapter *adapter = netdev_priv(netdev);
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
 	vmxnet3_write_mac_addr(adapter, addr->sa_data);
 
-- 
1.7.8.3


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

* [PATCH 09/12] wan/lapbether: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (7 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 08/12] vmxnet3: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 10/12] wireless: " Danny Kukawka
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, Stephen Hemminger, Jiri Pirko, Joe Perches,
	netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address/
lapbeth_set_mac_address(), if invalid return -EADDRNOTAVAIL as
eth_mac_addr() already does if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/wan/lapbether.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
index 7beeb9b..b6d4cbc 100644
--- a/drivers/net/wan/lapbether.c
+++ b/drivers/net/wan/lapbether.c
@@ -45,6 +45,7 @@
 #include <linux/module.h>
 #include <linux/lapb.h>
 #include <linux/init.h>
+#include <linux/etherdevice.h>
 
 #include <net/x25device.h>
 
@@ -254,6 +255,10 @@ static void lapbeth_disconnected(struct net_device *dev, int reason)
 static int lapbeth_set_mac_address(struct net_device *dev, void *addr)
 {
 	struct sockaddr *sa = addr;
+
+	if (!is_valid_ether_addr(sa->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
 	return 0;
 }
-- 
1.7.8.3


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

* [PATCH 10/12] wireless: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (8 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 09/12] wan/lapbether: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 11/12] s390/net/qeth_l2_main: " Danny Kukawka
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: John W. Linville, Simon Kelley, Brett Rudley, Henry Ptasinski,
	Roland Vossen, Arend van Spriel, Franky (Zhenhui) Lin, Kan Yan,
	Jouni Malinen, Dan Williams, Bing Zhao
  Cc: Danny Kukawka, linux-wireless, David S. Miller, netdev,
	linux-kernel, libertas-dev

Check if given address is valid in .ndo_set_mac_address, if
invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/wireless/airo.c                        |    3 +++
 drivers/net/wireless/atmel.c                       |    3 +++
 .../net/wireless/brcm80211/brcmfmac/dhd_linux.c    |    5 ++++-
 drivers/net/wireless/hostap/hostap_main.c          |    3 +++
 drivers/net/wireless/libertas/main.c               |    3 +++
 drivers/net/wireless/mwifiex/main.c                |    3 +++
 drivers/net/wireless/zd1201.c                      |    2 ++
 7 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 1c008c6..a205332 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -2320,6 +2320,9 @@ static int airo_set_mac_address(struct net_device *dev, void *p)
 	struct airo_info *ai = dev->ml_priv;
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	readConfigRid(ai, 1);
 	memcpy (ai->config.macAddr, addr->sa_data, dev->addr_len);
 	set_bit (FLAG_COMMIT, &ai->flags);
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 3010cee..1abeb0e 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1309,6 +1309,9 @@ static int atmel_set_mac_address(struct net_device *dev, void *p)
 {
 	struct sockaddr *addr = p;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy (dev->dev_addr, addr->sa_data, dev->addr_len);
 	return atmel_open(dev);
 }
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index db2df1f..d192758 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -257,7 +257,10 @@ static int brcmf_netdev_set_mac_address(struct net_device *ndev, void *addr)
 {
 	struct brcmf_if *ifp = netdev_priv(ndev);
 	struct brcmf_pub *drvr = ifp->drvr;
-	struct sockaddr *sa = (struct sockaddr *)addr;
+	struct sockaddr *sa = addr;
+
+	if (!is_valid_ether_addr(sa->sa_data))
+		return -EADDRNOTAVAIL;
 
 	memcpy(&drvr->macvalue, sa->sa_data, ETH_ALEN);
 	schedule_work(&drvr->setmacaddr_work);
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c
index bfa0d54..0c475d3 100644
--- a/drivers/net/wireless/hostap/hostap_main.c
+++ b/drivers/net/wireless/hostap/hostap_main.c
@@ -713,6 +713,9 @@ static int prism2_set_mac_address(struct net_device *dev, void *p)
 	iface = netdev_priv(dev);
 	local = iface->local;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (local->func->set_rid(dev, HFA384X_RID_CNFOWNMACADDR, addr->sa_data,
 				 ETH_ALEN) < 0 || local->func->reset_port(dev))
 		return -EINVAL;
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
index 957681d..33bf268 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -297,6 +297,9 @@ int lbs_set_mac_address(struct net_device *dev, void *addr)
 
 	lbs_deb_enter(LBS_DEB_NET);
 
+	if (!is_valid_ether_addr(phwaddr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	/*
 	 * Can only set MAC address when all interfaces are down, to be written
 	 * to the hardware when one of them is brought up.
diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c
index 790a379..7b43109 100644
--- a/drivers/net/wireless/mwifiex/main.c
+++ b/drivers/net/wireless/mwifiex/main.c
@@ -485,6 +485,9 @@ mwifiex_set_mac_address(struct net_device *dev, void *addr)
 	struct sockaddr *hw_addr = addr;
 	int ret;
 
+	if (!is_valid_ether_addr(hw_addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	memcpy(priv->curr_addr, hw_addr->sa_data, ETH_ALEN);
 
 	/* Send request to firmware */
diff --git a/drivers/net/wireless/zd1201.c b/drivers/net/wireless/zd1201.c
index a66b93b..60bc0ea 100644
--- a/drivers/net/wireless/zd1201.c
+++ b/drivers/net/wireless/zd1201.c
@@ -853,6 +853,8 @@ static int zd1201_set_mac_address(struct net_device *dev, void *p)
 
 	if (!zd)
 		return -ENODEV;
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
 
 	err = zd1201_setconfig(zd, ZD1201_RID_CNFOWNMACADDR, 
 	    addr->sa_data, dev->addr_len, 1);
-- 
1.7.8.3


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

* [PATCH 11/12] s390/net/qeth_l2_main: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (9 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 10/12] wireless: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:01 ` [PATCH 12/12] rose: " Danny Kukawka
  2012-02-24 17:59 ` [PATCH 00/12] Part 2: " Michał Mirosław
  12 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Ursula Braun, Frank Blaschka, linux390, Martin Schwidefsky,
	Heiko Carstens
  Cc: Danny Kukawka, linux-s390, David S. Miller, linux-kernel


Check if given address is valid in .ndo_set_mac_address/
qeth_l2_set_mac_address(), if invalid return -EADDRNOTAVAIL as
eth_mac_addr() already does if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/s390/net/qeth_l2_main.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
index e5c9cf1..d10b3a4 100644
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -661,6 +661,9 @@ static int qeth_l2_set_mac_address(struct net_device *dev, void *p)
 	struct qeth_card *card = dev->ml_priv;
 	int rc = 0;
 
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EADDRNOTAVAIL;
+
 	QETH_CARD_TEXT(card, 3, "setmac");
 
 	if (qeth_l2_verify_dev(dev) != QETH_REAL_CARD) {
-- 
1.7.8.3


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

* [PATCH 12/12] rose: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (10 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 11/12] s390/net/qeth_l2_main: " Danny Kukawka
@ 2012-02-24 16:01 ` Danny Kukawka
  2012-02-24 16:13   ` Alan Cox
  2012-02-24 17:59 ` [PATCH 00/12] Part 2: " Michał Mirosław
  12 siblings, 1 reply; 22+ messages in thread
From: Danny Kukawka @ 2012-02-24 16:01 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Danny Kukawka, David S. Miller, linux-hams, netdev, linux-kernel

Check if given address is valid in .ndo_set_mac_address/
rose_set_mac_address(), if invalid return -EADDRNOTAVAIL as
eth_mac_addr() already does if is_valid_ether_addr() fails.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/rose/rose_dev.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c
index 178ff4f..1ae8791 100644
--- a/net/rose/rose_dev.c
+++ b/net/rose/rose_dev.c
@@ -96,6 +96,9 @@ static int rose_set_mac_address(struct net_device *dev, void *addr)
 	struct sockaddr *sa = addr;
 	int err;
 
+	if (!is_valid_ether_addr(sa->sa_data))
+		return -EADDRNOTAVAIL;
+
 	if (!memcpy(dev->dev_addr, sa->sa_data, dev->addr_len))
 		return 0;
 
-- 
1.7.8.3


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

* Re: [PATCH 12/12] rose: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 ` [PATCH 12/12] rose: " Danny Kukawka
@ 2012-02-24 16:13   ` Alan Cox
  2012-02-24 20:43     ` David Miller
  0 siblings, 1 reply; 22+ messages in thread
From: Alan Cox @ 2012-02-24 16:13 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: Ralf Baechle, Danny Kukawka, David S. Miller, linux-hams, netdev,
	linux-kernel

On Fri, 24 Feb 2012 17:01:22 +0100
Danny Kukawka <danny.kukawka@bisect.de> wrote:

> Check if given address is valid in .ndo_set_mac_address/
> rose_set_mac_address(), if invalid return -EADDRNOTAVAIL as
> eth_mac_addr() already does if is_valid_ether_addr() fails.

This patch series looks wrong - you cannot go blindly applying ethernet
mac address tests to device drivers without checking if they are using
802.11 type addressing at the physical level.

Alan



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

* Re: [Pv-drivers] [PATCH 08/12] vmxnet3: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 ` [PATCH 08/12] vmxnet3: " Danny Kukawka
@ 2012-02-24 16:31   ` Bhavesh Davda
  0 siblings, 0 replies; 22+ messages in thread
From: Bhavesh Davda @ 2012-02-24 16:31 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: Shreyas Bhatewara, VMware, Inc.,
	netdev, Danny Kukawka, David S. Miller, linux-kernel

Lgtm.

Reviewed-by: Bhavesh Davda <bhavesh@vmware.com>

- Bhavesh

(From my iPhone)


On Feb 24, 2012, at 8:01 AM, "Danny Kukawka" <danny.kukawka@bisect.de> wrote:

> Check if given address is valid in .ndo_set_mac_address/
> vmxnet3_set_mac_addr(), if invalid return -EADDRNOTAVAIL as
> eth_mac_addr() already does if is_valid_ether_addr() fails.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
> drivers/net/vmxnet3/vmxnet3_drv.c |    3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
> index e1562e8..bd2a7cd 100644
> --- a/drivers/net/vmxnet3/vmxnet3_drv.c
> +++ b/drivers/net/vmxnet3/vmxnet3_drv.c
> @@ -2331,6 +2331,9 @@ vmxnet3_set_mac_addr(struct net_device *netdev, void *p)
>    struct sockaddr *addr = p;
>    struct vmxnet3_adapter *adapter = netdev_priv(netdev);
> 
> +    if (!is_valid_ether_addr(addr->sa_data))
> +        return -EADDRNOTAVAIL;
> +
>    memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
>    vmxnet3_write_mac_addr(adapter, addr->sa_data);
> 
> -- 
> 1.7.8.3
> 
> _______________________________________________
> Pv-drivers mailing list
> Pv-drivers@vmware.com
> http://mailman2.vmware.com/mailman/listinfo/pv-drivers

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

* Re: [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
                   ` (11 preceding siblings ...)
  2012-02-24 16:01 ` [PATCH 12/12] rose: " Danny Kukawka
@ 2012-02-24 17:59 ` Michał Mirosław
  2012-02-25 10:13   ` Geert Uytterhoeven
  12 siblings, 1 reply; 22+ messages in thread
From: Michał Mirosław @ 2012-02-24 17:59 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Andy Gospodarek, Guo-Fu Tseng, Petko Manolov,
	VMware, Inc.,
	John W. Linville, linux390, Mauro Carvalho Chehab, Danny Kukawka,
	Stephen Hemminger, Joe Perches, Jeff Kirsher, Jiri Pirko, netdev,
	linux-usb, linux-wireless, libertas-dev, linux-kernel,
	linux-media, linux-s390, linux-hams, linux-mips

2012/2/24 Danny Kukawka <danny.kukawka@bisect.de>:
> Second Part of series patches to unifiy the return value of
> .ndo_set_mac_address if the given address isn't valid.
>
> These changes check if a given (MAC) address is valid in
> .ndo_set_mac_address, if invalid return -EADDRNOTAVAIL
> as eth_mac_addr() already does if is_valid_ether_addr() fails.

Why not just fix dev_set_mac_address() and make do_setlink() use that?
Checks are specific to address family, not device model I assume.

Best Regards,
Michał Mirosław

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

* Re: [PATCH 12/12] rose: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:13   ` Alan Cox
@ 2012-02-24 20:43     ` David Miller
  2012-02-25 18:25       ` Danny Kukawka
  0 siblings, 1 reply; 22+ messages in thread
From: David Miller @ 2012-02-24 20:43 UTC (permalink / raw)
  To: alan; +Cc: danny.kukawka, ralf, dkukawka, linux-hams, netdev, linux-kernel

From: Alan Cox <alan@lxorguk.ukuu.org.uk>
Date: Fri, 24 Feb 2012 16:13:58 +0000

> On Fri, 24 Feb 2012 17:01:22 +0100
> Danny Kukawka <danny.kukawka@bisect.de> wrote:
> 
>> Check if given address is valid in .ndo_set_mac_address/
>> rose_set_mac_address(), if invalid return -EADDRNOTAVAIL as
>> eth_mac_addr() already does if is_valid_ether_addr() fails.
> 
> This patch series looks wrong - you cannot go blindly applying ethernet
> mac address tests to device drivers without checking if they are using
> 802.11 type addressing at the physical level.

Right.

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

* Re: [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 17:59 ` [PATCH 00/12] Part 2: " Michał Mirosław
@ 2012-02-25 10:13   ` Geert Uytterhoeven
  2012-02-29  7:02     ` Danny Kukawka
  0 siblings, 1 reply; 22+ messages in thread
From: Geert Uytterhoeven @ 2012-02-25 10:13 UTC (permalink / raw)
  To: Michał Mirosław
  Cc: Danny Kukawka, David S. Miller, Andy Gospodarek, Guo-Fu Tseng,
	Petko Manolov, VMware, Inc.,
	John W. Linville, linux390, Mauro Carvalho Chehab, Danny Kukawka,
	Stephen Hemminger, Joe Perches, Jeff Kirsher, Jiri Pirko, netdev,
	linux-usb, linux-wireless, libertas-dev, linux-kernel,
	linux-media, linux-s390, linux-hams, linux-mips

2012/2/24 Michał Mirosław <mirqus@gmail.com>:
> 2012/2/24 Danny Kukawka <danny.kukawka@bisect.de>:
>> Second Part of series patches to unifiy the return value of
>> .ndo_set_mac_address if the given address isn't valid.
>>
>> These changes check if a given (MAC) address is valid in
>> .ndo_set_mac_address, if invalid return -EADDRNOTAVAIL
>> as eth_mac_addr() already does if is_valid_ether_addr() fails.
>
> Why not just fix dev_set_mac_address() and make do_setlink() use that?

BTW, it's also called from dev_set_mac_address().

> Checks are specific to address family, not device model I assume.

Indeed, why can't this be done in one single place, instead of sprinkling these
checks over all drivers, missing all out-of-tree (note: I don't care) and all
soon-to-be-submitted drivers?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* Re: [PATCH 02/12] cris/eth_v10: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 ` [PATCH 02/12] cris/eth_v10: check given MAC " Danny Kukawka
@ 2012-02-25 17:18   ` Jesper Nilsson
  0 siblings, 0 replies; 22+ messages in thread
From: Jesper Nilsson @ 2012-02-25 17:18 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Danny Kukawka, Lucas De Marchi,
	Javier Martinez Canillas, Jiri Pirko, netdev, linux-kernel

On Fri, Feb 24, 2012 at 05:01:12PM +0100, Danny Kukawka wrote:
> Check if given address is valid in .ndo_set_mac_address, if
> invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
> if is_valid_ether_addr() fails.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>

Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>

/^JN - Jesper Nilsson
--
                  Jesper Nilsson -- jesper_at_jni.nu

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

* Re: [PATCH 12/12] rose: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 20:43     ` David Miller
@ 2012-02-25 18:25       ` Danny Kukawka
  0 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-25 18:25 UTC (permalink / raw)
  To: David Miller; +Cc: alan, ralf, linux-hams, netdev, linux-kernel

On Freitag, 24. Februar 2012, David Miller wrote:
> From: Alan Cox <alan@lxorguk.ukuu.org.uk>
> Date: Fri, 24 Feb 2012 16:13:58 +0000
>
> > On Fri, 24 Feb 2012 17:01:22 +0100
> >
> > Danny Kukawka <danny.kukawka@bisect.de> wrote:
> >> Check if given address is valid in .ndo_set_mac_address/
> >> rose_set_mac_address(), if invalid return -EADDRNOTAVAIL as
> >> eth_mac_addr() already does if is_valid_ether_addr() fails.
> >
> > This patch series looks wrong - you cannot go blindly applying ethernet
> > mac address tests to device drivers without checking if they are using
> > 802.11 type addressing at the physical level.

Overseen this aspect ... Sorry. I'll check the patches and send an updated 
version.

Do you mean 802.3 ? 

Danny

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

* Re: [PATCH 05/12] team: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-24 16:01 ` [PATCH 05/12] team: " Danny Kukawka
@ 2012-02-26  0:07   ` Jiri Pirko
  0 siblings, 0 replies; 22+ messages in thread
From: Jiri Pirko @ 2012-02-26  0:07 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Fri, Feb 24, 2012 at 05:01:15PM CET, danny.kukawka@bisect.de wrote:
>Check if given address is valid in .ndo_set_mac_address, if
>invalid return -EADDRNOTAVAIL as eth_mac_addr() already does
>if is_valid_ether_addr() fails.
>
>Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
>---
> drivers/net/team/team.c |    3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
>diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
>index 8f81805..788650c 100644
>--- a/drivers/net/team/team.c
>+++ b/drivers/net/team/team.c
>@@ -868,6 +868,9 @@ static int team_set_mac_address(struct net_device *dev, void *p)
> 	struct team_port *port;
> 	struct sockaddr *addr = p;
> 
>+	if (!is_valid_ether_addr(addr->sa_data))
>+		return -EADDRNOTAVAIL;
>+


Wouldn't it be better to do this in one place? dev_set_mac_address()
seems like a good place...

Jirka


> 	dev->addr_assign_type &= ~NET_ADDR_RANDOM;
> 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
> 	rcu_read_lock();
>-- 
>1.7.8.3
>

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

* Re: [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL
  2012-02-25 10:13   ` Geert Uytterhoeven
@ 2012-02-29  7:02     ` Danny Kukawka
  0 siblings, 0 replies; 22+ messages in thread
From: Danny Kukawka @ 2012-02-29  7:02 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Michał Mirosław, David S. Miller, Andy Gospodarek,
	Guo-Fu Tseng, Petko Manolov, VMware, Inc.,
	John W. Linville, linux390, Mauro Carvalho Chehab,
	Stephen Hemminger, Joe Perches, Jeff Kirsher, Jiri Pirko, netdev,
	linux-usb, linux-wireless, libertas-dev, linux-kernel,
	linux-media, linux-s390, linux-hams, linux-mips

On Samstag, 25. Februar 2012, Geert Uytterhoeven wrote:
> 2012/2/24 Michał Mirosław <mirqus@gmail.com>:
> > 2012/2/24 Danny Kukawka <danny.kukawka@bisect.de>:
> >> Second Part of series patches to unifiy the return value of
> >> .ndo_set_mac_address if the given address isn't valid.
> >>
> >> These changes check if a given (MAC) address is valid in
> >> .ndo_set_mac_address, if invalid return -EADDRNOTAVAIL
> >> as eth_mac_addr() already does if is_valid_ether_addr() fails.
> >
> > Why not just fix dev_set_mac_address() and make do_setlink() use that?
>
> BTW, it's also called from dev_set_mac_address().
>
> > Checks are specific to address family, not device model I assume.
>
> Indeed, why can't this be done in one single place, instead of sprinkling
> these checks over all drivers, missing all out-of-tree (note: I don't care)
> and all soon-to-be-submitted drivers?

Since the .ndo_set_mac_address functions are used by some drivers internally 
too, you may get some new checks on other places. But I'll take a look at it.

Danny


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

end of thread, other threads:[~2012-02-29  7:04 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-24 16:01 [PATCH 00/12] Part 2: check given MAC address, if invalid return -EADDRNOTAVAIL Danny Kukawka
2012-02-24 16:01 ` [PATCH 01/12] ethernet: .ndo_set_mac_address: check given " Danny Kukawka
2012-02-24 16:01 ` [PATCH 02/12] cris/eth_v10: check given MAC " Danny Kukawka
2012-02-25 17:18   ` Jesper Nilsson
2012-02-24 16:01 ` [PATCH 03/12] dvb_net: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 04/12] fddi/skfp: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 05/12] team: " Danny Kukawka
2012-02-26  0:07   ` Jiri Pirko
2012-02-24 16:01 ` [PATCH 06/12] tokenring: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 07/12] usb/rtl8150: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 08/12] vmxnet3: " Danny Kukawka
2012-02-24 16:31   ` [Pv-drivers] " Bhavesh Davda
2012-02-24 16:01 ` [PATCH 09/12] wan/lapbether: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 10/12] wireless: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 11/12] s390/net/qeth_l2_main: " Danny Kukawka
2012-02-24 16:01 ` [PATCH 12/12] rose: " Danny Kukawka
2012-02-24 16:13   ` Alan Cox
2012-02-24 20:43     ` David Miller
2012-02-25 18:25       ` Danny Kukawka
2012-02-24 17:59 ` [PATCH 00/12] Part 2: " Michał Mirosław
2012-02-25 10:13   ` Geert Uytterhoeven
2012-02-29  7:02     ` Danny Kukawka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).