All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/8] don't write directly to netdev->dev_addr
@ 2021-10-22 17:55 Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 1/8] net: core: constify mac addrs in selftests Jakub Kicinski
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski

Constify references to netdev->dev_addr and
use appropriate helpers.

Jakub Kicinski (8):
  net: core: constify mac addrs in selftests
  net: rtnetlink: use __dev_addr_set()
  net: phy: constify netdev->dev_addr references
  net: bonding: constify and use dev_addr_set()
  net: hsr: get ready for const netdev->dev_addr
  net: caif: get ready for const netdev->dev_addr
  net: drivers: get ready for const netdev->dev_addr
  net: atm: use address setting helpers

 drivers/net/bonding/bond_alb.c    | 28 +++++++++++++---------------
 drivers/net/bonding/bond_main.c   |  2 +-
 drivers/net/macsec.c              |  2 +-
 drivers/net/macvlan.c             |  3 ++-
 drivers/net/phy/dp83867.c         |  4 ++--
 drivers/net/phy/dp83869.c         |  4 ++--
 drivers/net/vmxnet3/vmxnet3_drv.c |  4 ++--
 net/atm/br2684.c                  |  4 +++-
 net/atm/lec.c                     |  5 ++---
 net/caif/caif_usb.c               |  2 +-
 net/core/rtnetlink.c              |  4 ++--
 net/core/selftests.c              |  8 ++++----
 net/hsr/hsr_framereg.c            |  4 ++--
 net/hsr/hsr_framereg.h            |  4 ++--
 14 files changed, 39 insertions(+), 39 deletions(-)

-- 
2.31.1


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

* [PATCH net-next 1/8] net: core: constify mac addrs in selftests
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 2/8] net: rtnetlink: use __dev_addr_set() Jakub Kicinski
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski

Get it ready for constant netdev->dev_addr.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 net/core/selftests.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/core/selftests.c b/net/core/selftests.c
index 9077fa969892..acb1ee97bbd3 100644
--- a/net/core/selftests.c
+++ b/net/core/selftests.c
@@ -15,8 +15,8 @@
 #include <net/udp.h>
 
 struct net_packet_attrs {
-	unsigned char *src;
-	unsigned char *dst;
+	const unsigned char *src;
+	const unsigned char *dst;
 	u32 ip_src;
 	u32 ip_dst;
 	bool tcp;
@@ -173,8 +173,8 @@ static int net_test_loopback_validate(struct sk_buff *skb,
 				      struct net_device *orig_ndev)
 {
 	struct net_test_priv *tpriv = pt->af_packet_priv;
-	unsigned char *src = tpriv->packet->src;
-	unsigned char *dst = tpriv->packet->dst;
+	const unsigned char *src = tpriv->packet->src;
+	const unsigned char *dst = tpriv->packet->dst;
 	struct netsfhdr *shdr;
 	struct ethhdr *ehdr;
 	struct udphdr *uhdr;
-- 
2.31.1


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

* [PATCH net-next 2/8] net: rtnetlink: use __dev_addr_set()
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 1/8] net: core: constify mac addrs in selftests Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 3/8] net: phy: constify netdev->dev_addr references Jakub Kicinski
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski

Get it ready for constant netdev->dev_addr.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 net/core/rtnetlink.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 79477dcae7c2..2af8aeeadadf 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3204,8 +3204,8 @@ struct net_device *rtnl_create_link(struct net *net, const char *ifname,
 		dev->mtu = mtu;
 	}
 	if (tb[IFLA_ADDRESS]) {
-		memcpy(dev->dev_addr, nla_data(tb[IFLA_ADDRESS]),
-				nla_len(tb[IFLA_ADDRESS]));
+		__dev_addr_set(dev, nla_data(tb[IFLA_ADDRESS]),
+			       nla_len(tb[IFLA_ADDRESS]));
 		dev->addr_assign_type = NET_ADDR_SET;
 	}
 	if (tb[IFLA_BROADCAST])
-- 
2.31.1


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

* [PATCH net-next 3/8] net: phy: constify netdev->dev_addr references
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 1/8] net: core: constify mac addrs in selftests Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 2/8] net: rtnetlink: use __dev_addr_set() Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 19:07   ` Andrew Lunn
  2021-10-22 17:55 ` [PATCH net-next 4/8] net: bonding: constify and use dev_addr_set() Jakub Kicinski
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski, andrew, hkallweit1, linux

netdev->dev_addr will become a const soon(ish),
constify the local variables referring to it.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: andrew@lunn.ch
CC: hkallweit1@gmail.com
CC: linux@armlinux.org.uk
---
 drivers/net/phy/dp83867.c | 4 ++--
 drivers/net/phy/dp83869.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index 914619f3f0e3..8561f2d4443b 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -182,7 +182,7 @@ static int dp83867_set_wol(struct phy_device *phydev,
 {
 	struct net_device *ndev = phydev->attached_dev;
 	u16 val_rxcfg, val_micr;
-	u8 *mac;
+	const u8 *mac;
 
 	val_rxcfg = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_RXFCFG);
 	val_micr = phy_read(phydev, MII_DP83867_MICR);
@@ -193,7 +193,7 @@ static int dp83867_set_wol(struct phy_device *phydev,
 		val_micr |= MII_DP83867_MICR_WOL_INT_EN;
 
 		if (wol->wolopts & WAKE_MAGIC) {
-			mac = (u8 *)ndev->dev_addr;
+			mac = (const u8 *)ndev->dev_addr;
 
 			if (!is_valid_ether_addr(mac))
 				return -EINVAL;
diff --git a/drivers/net/phy/dp83869.c b/drivers/net/phy/dp83869.c
index 755220c6451f..7113925606f7 100644
--- a/drivers/net/phy/dp83869.c
+++ b/drivers/net/phy/dp83869.c
@@ -246,7 +246,7 @@ static int dp83869_set_wol(struct phy_device *phydev,
 {
 	struct net_device *ndev = phydev->attached_dev;
 	int val_rxcfg, val_micr;
-	u8 *mac;
+	const u8 *mac;
 	int ret;
 
 	val_rxcfg = phy_read_mmd(phydev, DP83869_DEVADDR, DP83869_RXFCFG);
@@ -264,7 +264,7 @@ static int dp83869_set_wol(struct phy_device *phydev,
 
 		if (wol->wolopts & WAKE_MAGIC ||
 		    wol->wolopts & WAKE_MAGICSECURE) {
-			mac = (u8 *)ndev->dev_addr;
+			mac = (const u8 *)ndev->dev_addr;
 
 			if (!is_valid_ether_addr(mac))
 				return -EINVAL;
-- 
2.31.1


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

* [PATCH net-next 4/8] net: bonding: constify and use dev_addr_set()
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
                   ` (2 preceding siblings ...)
  2021-10-22 17:55 ` [PATCH net-next 3/8] net: phy: constify netdev->dev_addr references Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 18:39   ` Jay Vosburgh
  2021-10-22 17:55 ` [PATCH net-next 5/8] net: hsr: get ready for const netdev->dev_addr Jakub Kicinski
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski, j.vosburgh, vfalico, andy

Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.

Make sure local references to netdev->dev_addr are constant.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: j.vosburgh@gmail.com
CC: vfalico@gmail.com
CC: andy@greyhouse.net
---
 drivers/net/bonding/bond_alb.c  | 28 +++++++++++++---------------
 drivers/net/bonding/bond_main.c |  2 +-
 2 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 7d3752cbf761..2ec8e015c7b3 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -50,7 +50,7 @@ struct arp_pkt {
 #pragma pack()
 
 /* Forward declaration */
-static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
+static void alb_send_learning_packets(struct slave *slave, const u8 mac_addr[],
 				      bool strict_match);
 static void rlb_purge_src_ip(struct bonding *bond, struct arp_pkt *arp);
 static void rlb_src_unlink(struct bonding *bond, u32 index);
@@ -353,7 +353,8 @@ static struct slave *rlb_next_rx_slave(struct bonding *bond)
  *
  * Caller must hold RTNL
  */
-static void rlb_teach_disabled_mac_on_primary(struct bonding *bond, u8 addr[])
+static void rlb_teach_disabled_mac_on_primary(struct bonding *bond,
+					      const u8 addr[])
 {
 	struct slave *curr_active = rtnl_dereference(bond->curr_active_slave);
 
@@ -904,7 +905,7 @@ static void rlb_clear_vlan(struct bonding *bond, unsigned short vlan_id)
 
 /*********************** tlb/rlb shared functions *********************/
 
-static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
+static void alb_send_lp_vid(struct slave *slave, const u8 mac_addr[],
 			    __be16 vlan_proto, u16 vid)
 {
 	struct learning_pkt pkt;
@@ -940,7 +941,7 @@ static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
 struct alb_walk_data {
 	struct bonding *bond;
 	struct slave *slave;
-	u8 *mac_addr;
+	const u8 *mac_addr;
 	bool strict_match;
 };
 
@@ -949,9 +950,9 @@ static int alb_upper_dev_walk(struct net_device *upper,
 {
 	struct alb_walk_data *data = (struct alb_walk_data *)priv->data;
 	bool strict_match = data->strict_match;
+	const u8 *mac_addr = data->mac_addr;
 	struct bonding *bond = data->bond;
 	struct slave *slave = data->slave;
-	u8 *mac_addr = data->mac_addr;
 	struct bond_vlan_tag *tags;
 
 	if (is_vlan_dev(upper) &&
@@ -982,7 +983,7 @@ static int alb_upper_dev_walk(struct net_device *upper,
 	return 0;
 }
 
-static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
+static void alb_send_learning_packets(struct slave *slave, const u8 mac_addr[],
 				      bool strict_match)
 {
 	struct bonding *bond = bond_get_bond_by_slave(slave);
@@ -1006,14 +1007,14 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
 	rcu_read_unlock();
 }
 
-static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[],
+static int alb_set_slave_mac_addr(struct slave *slave, const u8 addr[],
 				  unsigned int len)
 {
 	struct net_device *dev = slave->dev;
 	struct sockaddr_storage ss;
 
 	if (BOND_MODE(slave->bond) == BOND_MODE_TLB) {
-		memcpy(dev->dev_addr, addr, len);
+		__dev_addr_set(dev, addr, len);
 		return 0;
 	}
 
@@ -1242,8 +1243,7 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
 		res = dev_set_mac_address(slave->dev, addr, NULL);
 
 		/* restore net_device's hw address */
-		bond_hw_addr_copy(slave->dev->dev_addr, tmp_addr,
-				  slave->dev->addr_len);
+		dev_addr_set(slave->dev, tmp_addr);
 
 		if (res)
 			goto unwind;
@@ -1263,8 +1263,7 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
 				  rollback_slave->dev->addr_len);
 		dev_set_mac_address(rollback_slave->dev,
 				    (struct sockaddr *)&ss, NULL);
-		bond_hw_addr_copy(rollback_slave->dev->dev_addr, tmp_addr,
-				  rollback_slave->dev->addr_len);
+		dev_addr_set(rollback_slave->dev, tmp_addr);
 	}
 
 	return res;
@@ -1727,8 +1726,7 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave
 		dev_set_mac_address(new_slave->dev, (struct sockaddr *)&ss,
 				    NULL);
 
-		bond_hw_addr_copy(new_slave->dev->dev_addr, tmp_addr,
-				  new_slave->dev->addr_len);
+		dev_addr_set(new_slave->dev, tmp_addr);
 	}
 
 	/* curr_active_slave must be set before calling alb_swap_mac_addr */
@@ -1761,7 +1759,7 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
 	if (res)
 		return res;
 
-	bond_hw_addr_copy(bond_dev->dev_addr, ss->__data, bond_dev->addr_len);
+	dev_addr_set(bond_dev, ss->__data);
 
 	/* If there is no curr_active_slave there is nothing else to do.
 	 * Otherwise we'll need to pass the new address to it and handle
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 0c52612cb8e9..ff8da720a33a 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -923,7 +923,7 @@ static int bond_set_dev_addr(struct net_device *bond_dev,
 	if (err)
 		return err;
 
-	memcpy(bond_dev->dev_addr, slave_dev->dev_addr, slave_dev->addr_len);
+	__dev_addr_set(bond_dev, slave_dev->dev_addr, slave_dev->addr_len);
 	bond_dev->addr_assign_type = NET_ADDR_STOLEN;
 	call_netdevice_notifiers(NETDEV_CHANGEADDR, bond_dev);
 	return 0;
-- 
2.31.1


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

* [PATCH net-next 5/8] net: hsr: get ready for const netdev->dev_addr
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
                   ` (3 preceding siblings ...)
  2021-10-22 17:55 ` [PATCH net-next 4/8] net: bonding: constify and use dev_addr_set() Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 6/8] net: caif: " Jakub Kicinski
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski, george.mccollister, marco.wenzel

hsr_create_self_node() may get netdev->dev_addr
passed as argument, netdev->dev_addr will be
const soon.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: george.mccollister@gmail.com
CC: marco.wenzel@a-eberle.de
---
 net/hsr/hsr_framereg.c | 4 ++--
 net/hsr/hsr_framereg.h | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c
index e31949479305..91292858a63b 100644
--- a/net/hsr/hsr_framereg.c
+++ b/net/hsr/hsr_framereg.c
@@ -76,8 +76,8 @@ static struct hsr_node *find_node_by_addr_A(struct list_head *node_db,
  * frames from self that's been looped over the HSR ring.
  */
 int hsr_create_self_node(struct hsr_priv *hsr,
-			 unsigned char addr_a[ETH_ALEN],
-			 unsigned char addr_b[ETH_ALEN])
+			 const unsigned char addr_a[ETH_ALEN],
+			 const unsigned char addr_b[ETH_ALEN])
 {
 	struct list_head *self_node_db = &hsr->self_node_db;
 	struct hsr_node *node, *oldnode;
diff --git a/net/hsr/hsr_framereg.h b/net/hsr/hsr_framereg.h
index d9628e7a5f05..bdbb8c822ba1 100644
--- a/net/hsr/hsr_framereg.h
+++ b/net/hsr/hsr_framereg.h
@@ -48,8 +48,8 @@ int hsr_register_frame_out(struct hsr_port *port, struct hsr_node *node,
 void hsr_prune_nodes(struct timer_list *t);
 
 int hsr_create_self_node(struct hsr_priv *hsr,
-			 unsigned char addr_a[ETH_ALEN],
-			 unsigned char addr_b[ETH_ALEN]);
+			 const unsigned char addr_a[ETH_ALEN],
+			 const unsigned char addr_b[ETH_ALEN]);
 
 void *hsr_get_next_node(struct hsr_priv *hsr, void *_pos,
 			unsigned char addr[ETH_ALEN]);
-- 
2.31.1


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

* [PATCH net-next 6/8] net: caif: get ready for const netdev->dev_addr
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
                   ` (4 preceding siblings ...)
  2021-10-22 17:55 ` [PATCH net-next 5/8] net: hsr: get ready for const netdev->dev_addr Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 7/8] net: drivers: " Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 8/8] net: atm: use address setting helpers Jakub Kicinski
  7 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski

Get it ready for constant netdev->dev_addr.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 net/caif/caif_usb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/caif/caif_usb.c b/net/caif/caif_usb.c
index b02e1292f7f1..4be6b04879a1 100644
--- a/net/caif/caif_usb.c
+++ b/net/caif/caif_usb.c
@@ -81,7 +81,7 @@ static void cfusbl_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl,
 		layr->up->ctrlcmd(layr->up, ctrl, layr->id);
 }
 
-static struct cflayer *cfusbl_create(int phyid, u8 ethaddr[ETH_ALEN],
+static struct cflayer *cfusbl_create(int phyid, const u8 ethaddr[ETH_ALEN],
 				      u8 braddr[ETH_ALEN])
 {
 	struct cfusbl *this = kmalloc(sizeof(struct cfusbl), GFP_ATOMIC);
-- 
2.31.1


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

* [PATCH net-next 7/8] net: drivers: get ready for const netdev->dev_addr
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
                   ` (5 preceding siblings ...)
  2021-10-22 17:55 ` [PATCH net-next 6/8] net: caif: " Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  2021-10-22 17:55 ` [PATCH net-next 8/8] net: atm: use address setting helpers Jakub Kicinski
  7 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski, doshir, pv-drivers

Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers. We will make
netdev->dev_addr a const.

Make sure local references to netdev->dev_addr are constant.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: doshir@vmware.com
CC: pv-drivers@vmware.com
---
 drivers/net/macsec.c              | 2 +-
 drivers/net/macvlan.c             | 3 ++-
 drivers/net/vmxnet3/vmxnet3_drv.c | 4 ++--
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 18b6dba9394e..16aa3a478e9e 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -250,7 +250,7 @@ static bool send_sci(const struct macsec_secy *secy)
 		(secy->n_rx_sc > 1 && !tx_sc->end_station && !tx_sc->scb);
 }
 
-static sci_t make_sci(u8 *addr, __be16 port)
+static sci_t make_sci(const u8 *addr, __be16 port)
 {
 	sci_t sci;
 
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 6189acb33973..d2f830ec2969 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -698,7 +698,8 @@ static int macvlan_stop(struct net_device *dev)
 	return 0;
 }
 
-static int macvlan_sync_address(struct net_device *dev, unsigned char *addr)
+static int macvlan_sync_address(struct net_device *dev,
+				const unsigned char *addr)
 {
 	struct macvlan_dev *vlan = netdev_priv(dev);
 	struct net_device *lowerdev = vlan->lowerdev;
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 7a205ddf0060..3e1b7746cce4 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -46,7 +46,7 @@ MODULE_DEVICE_TABLE(pci, vmxnet3_pciid_table);
 static int enable_mq = 1;
 
 static void
-vmxnet3_write_mac_addr(struct vmxnet3_adapter *adapter, u8 *mac);
+vmxnet3_write_mac_addr(struct vmxnet3_adapter *adapter, const u8 *mac);
 
 /*
  *    Enable/Disable the given intr
@@ -2806,7 +2806,7 @@ vmxnet3_quiesce_dev(struct vmxnet3_adapter *adapter)
 
 
 static void
-vmxnet3_write_mac_addr(struct vmxnet3_adapter *adapter, u8 *mac)
+vmxnet3_write_mac_addr(struct vmxnet3_adapter *adapter, const u8 *mac)
 {
 	u32 tmp;
 
-- 
2.31.1


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

* [PATCH net-next 8/8] net: atm: use address setting helpers
  2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
                   ` (6 preceding siblings ...)
  2021-10-22 17:55 ` [PATCH net-next 7/8] net: drivers: " Jakub Kicinski
@ 2021-10-22 17:55 ` Jakub Kicinski
  7 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-10-22 17:55 UTC (permalink / raw)
  To: davem; +Cc: netdev, Jakub Kicinski

Get it ready for constant netdev->dev_addr.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 net/atm/br2684.c | 4 +++-
 net/atm/lec.c    | 5 ++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/atm/br2684.c b/net/atm/br2684.c
index 11854fde52db..f666f2f98ba5 100644
--- a/net/atm/br2684.c
+++ b/net/atm/br2684.c
@@ -577,10 +577,12 @@ static int br2684_regvcc(struct atm_vcc *atmvcc, void __user * arg)
 	pr_debug("vcc=%p, encaps=%d, brvcc=%p\n", atmvcc, be.encaps, brvcc);
 	if (list_empty(&brdev->brvccs) && !brdev->mac_was_set) {
 		unsigned char *esi = atmvcc->dev->esi;
+		const u8 one = 1;
+
 		if (esi[0] | esi[1] | esi[2] | esi[3] | esi[4] | esi[5])
 			dev_addr_set(net_dev, esi);
 		else
-			net_dev->dev_addr[2] = 1;
+			dev_addr_mod(net_dev, 2, &one, 1);
 	}
 	list_add(&brvcc->brvccs, &brdev->brvccs);
 	write_unlock_irq(&devs_lock);
diff --git a/net/atm/lec.c b/net/atm/lec.c
index 8eaea4a4bbd6..6257bf12e5a0 100644
--- a/net/atm/lec.c
+++ b/net/atm/lec.c
@@ -340,12 +340,12 @@ static int lec_close(struct net_device *dev)
 
 static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
 {
+	static const u8 zero_addr[ETH_ALEN] = {};
 	unsigned long flags;
 	struct net_device *dev = (struct net_device *)vcc->proto_data;
 	struct lec_priv *priv = netdev_priv(dev);
 	struct atmlec_msg *mesg;
 	struct lec_arp_table *entry;
-	int i;
 	char *tmp;		/* FIXME */
 
 	WARN_ON(refcount_sub_and_test(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc));
@@ -358,8 +358,7 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
 		eth_hw_addr_set(dev, mesg->content.normal.mac_addr);
 		break;
 	case l_del_mac_addr:
-		for (i = 0; i < 6; i++)
-			dev->dev_addr[i] = 0;
+		eth_hw_addr_set(dev, zero_addr);
 		break;
 	case l_addr_delete:
 		lec_addr_delete(priv, mesg->content.normal.atm_addr,
-- 
2.31.1


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

* Re: [PATCH net-next 4/8] net: bonding: constify and use dev_addr_set()
  2021-10-22 17:55 ` [PATCH net-next 4/8] net: bonding: constify and use dev_addr_set() Jakub Kicinski
@ 2021-10-22 18:39   ` Jay Vosburgh
  0 siblings, 0 replies; 11+ messages in thread
From: Jay Vosburgh @ 2021-10-22 18:39 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, vfalico, andy

Jakub Kicinski <kuba@kernel.org> wrote:

>Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
>of VLANs...") introduced a rbtree for faster Ethernet address look
>up. To maintain netdev->dev_addr in this tree we need to make all
>the writes to it got through appropriate helpers.

	Should the above be "go through"?

	-J

>Make sure local references to netdev->dev_addr are constant.
>
>Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>---
>CC: j.vosburgh@gmail.com
>CC: vfalico@gmail.com
>CC: andy@greyhouse.net
>---
> drivers/net/bonding/bond_alb.c  | 28 +++++++++++++---------------
> drivers/net/bonding/bond_main.c |  2 +-
> 2 files changed, 14 insertions(+), 16 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
>index 7d3752cbf761..2ec8e015c7b3 100644
>--- a/drivers/net/bonding/bond_alb.c
>+++ b/drivers/net/bonding/bond_alb.c
>@@ -50,7 +50,7 @@ struct arp_pkt {
> #pragma pack()
> 
> /* Forward declaration */
>-static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
>+static void alb_send_learning_packets(struct slave *slave, const u8 mac_addr[],
> 				      bool strict_match);
> static void rlb_purge_src_ip(struct bonding *bond, struct arp_pkt *arp);
> static void rlb_src_unlink(struct bonding *bond, u32 index);
>@@ -353,7 +353,8 @@ static struct slave *rlb_next_rx_slave(struct bonding *bond)
>  *
>  * Caller must hold RTNL
>  */
>-static void rlb_teach_disabled_mac_on_primary(struct bonding *bond, u8 addr[])
>+static void rlb_teach_disabled_mac_on_primary(struct bonding *bond,
>+					      const u8 addr[])
> {
> 	struct slave *curr_active = rtnl_dereference(bond->curr_active_slave);
> 
>@@ -904,7 +905,7 @@ static void rlb_clear_vlan(struct bonding *bond, unsigned short vlan_id)
> 
> /*********************** tlb/rlb shared functions *********************/
> 
>-static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
>+static void alb_send_lp_vid(struct slave *slave, const u8 mac_addr[],
> 			    __be16 vlan_proto, u16 vid)
> {
> 	struct learning_pkt pkt;
>@@ -940,7 +941,7 @@ static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
> struct alb_walk_data {
> 	struct bonding *bond;
> 	struct slave *slave;
>-	u8 *mac_addr;
>+	const u8 *mac_addr;
> 	bool strict_match;
> };
> 
>@@ -949,9 +950,9 @@ static int alb_upper_dev_walk(struct net_device *upper,
> {
> 	struct alb_walk_data *data = (struct alb_walk_data *)priv->data;
> 	bool strict_match = data->strict_match;
>+	const u8 *mac_addr = data->mac_addr;
> 	struct bonding *bond = data->bond;
> 	struct slave *slave = data->slave;
>-	u8 *mac_addr = data->mac_addr;
> 	struct bond_vlan_tag *tags;
> 
> 	if (is_vlan_dev(upper) &&
>@@ -982,7 +983,7 @@ static int alb_upper_dev_walk(struct net_device *upper,
> 	return 0;
> }
> 
>-static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
>+static void alb_send_learning_packets(struct slave *slave, const u8 mac_addr[],
> 				      bool strict_match)
> {
> 	struct bonding *bond = bond_get_bond_by_slave(slave);
>@@ -1006,14 +1007,14 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
> 	rcu_read_unlock();
> }
> 
>-static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[],
>+static int alb_set_slave_mac_addr(struct slave *slave, const u8 addr[],
> 				  unsigned int len)
> {
> 	struct net_device *dev = slave->dev;
> 	struct sockaddr_storage ss;
> 
> 	if (BOND_MODE(slave->bond) == BOND_MODE_TLB) {
>-		memcpy(dev->dev_addr, addr, len);
>+		__dev_addr_set(dev, addr, len);
> 		return 0;
> 	}
> 
>@@ -1242,8 +1243,7 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
> 		res = dev_set_mac_address(slave->dev, addr, NULL);
> 
> 		/* restore net_device's hw address */
>-		bond_hw_addr_copy(slave->dev->dev_addr, tmp_addr,
>-				  slave->dev->addr_len);
>+		dev_addr_set(slave->dev, tmp_addr);
> 
> 		if (res)
> 			goto unwind;
>@@ -1263,8 +1263,7 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
> 				  rollback_slave->dev->addr_len);
> 		dev_set_mac_address(rollback_slave->dev,
> 				    (struct sockaddr *)&ss, NULL);
>-		bond_hw_addr_copy(rollback_slave->dev->dev_addr, tmp_addr,
>-				  rollback_slave->dev->addr_len);
>+		dev_addr_set(rollback_slave->dev, tmp_addr);
> 	}
> 
> 	return res;
>@@ -1727,8 +1726,7 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave
> 		dev_set_mac_address(new_slave->dev, (struct sockaddr *)&ss,
> 				    NULL);
> 
>-		bond_hw_addr_copy(new_slave->dev->dev_addr, tmp_addr,
>-				  new_slave->dev->addr_len);
>+		dev_addr_set(new_slave->dev, tmp_addr);
> 	}
> 
> 	/* curr_active_slave must be set before calling alb_swap_mac_addr */
>@@ -1761,7 +1759,7 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
> 	if (res)
> 		return res;
> 
>-	bond_hw_addr_copy(bond_dev->dev_addr, ss->__data, bond_dev->addr_len);
>+	dev_addr_set(bond_dev, ss->__data);
> 
> 	/* If there is no curr_active_slave there is nothing else to do.
> 	 * Otherwise we'll need to pass the new address to it and handle
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index 0c52612cb8e9..ff8da720a33a 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -923,7 +923,7 @@ static int bond_set_dev_addr(struct net_device *bond_dev,
> 	if (err)
> 		return err;
> 
>-	memcpy(bond_dev->dev_addr, slave_dev->dev_addr, slave_dev->addr_len);
>+	__dev_addr_set(bond_dev, slave_dev->dev_addr, slave_dev->addr_len);
> 	bond_dev->addr_assign_type = NET_ADDR_STOLEN;
> 	call_netdevice_notifiers(NETDEV_CHANGEADDR, bond_dev);
> 	return 0;
>-- 
>2.31.1
>

---
	-Jay Vosburgh, jay.vosburgh@canonical.com

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

* Re: [PATCH net-next 3/8] net: phy: constify netdev->dev_addr references
  2021-10-22 17:55 ` [PATCH net-next 3/8] net: phy: constify netdev->dev_addr references Jakub Kicinski
@ 2021-10-22 19:07   ` Andrew Lunn
  0 siblings, 0 replies; 11+ messages in thread
From: Andrew Lunn @ 2021-10-22 19:07 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, hkallweit1, linux

On Fri, Oct 22, 2021 at 10:55:38AM -0700, Jakub Kicinski wrote:
> netdev->dev_addr will become a const soon(ish),
> constify the local variables referring to it.
> 
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

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

end of thread, other threads:[~2021-10-22 19:07 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-22 17:55 [PATCH net-next 0/8] don't write directly to netdev->dev_addr Jakub Kicinski
2021-10-22 17:55 ` [PATCH net-next 1/8] net: core: constify mac addrs in selftests Jakub Kicinski
2021-10-22 17:55 ` [PATCH net-next 2/8] net: rtnetlink: use __dev_addr_set() Jakub Kicinski
2021-10-22 17:55 ` [PATCH net-next 3/8] net: phy: constify netdev->dev_addr references Jakub Kicinski
2021-10-22 19:07   ` Andrew Lunn
2021-10-22 17:55 ` [PATCH net-next 4/8] net: bonding: constify and use dev_addr_set() Jakub Kicinski
2021-10-22 18:39   ` Jay Vosburgh
2021-10-22 17:55 ` [PATCH net-next 5/8] net: hsr: get ready for const netdev->dev_addr Jakub Kicinski
2021-10-22 17:55 ` [PATCH net-next 6/8] net: caif: " Jakub Kicinski
2021-10-22 17:55 ` [PATCH net-next 7/8] net: drivers: " Jakub Kicinski
2021-10-22 17:55 ` [PATCH net-next 8/8] net: atm: use address setting helpers Jakub Kicinski

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.