Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'net-use-dev_addr_set-in-hamradio-and-ip-tunnels'

Jakub Kicinski says:

====================
net: use dev_addr_set() in hamradio and ip tunnels

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

Link: https://lore.kernel.org/r/20211012160634.4152690-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+26 -28
+3 -3
drivers/net/hamradio/6pack.c
··· 288 288 289 289 netif_tx_lock_bh(dev); 290 290 netif_addr_lock(dev); 291 - memcpy(dev->dev_addr, &sa->sax25_call, AX25_ADDR_LEN); 291 + __dev_addr_set(dev, &sa->sax25_call, AX25_ADDR_LEN); 292 292 netif_addr_unlock(dev); 293 293 netif_tx_unlock_bh(dev); 294 294 ··· 317 317 318 318 /* Only activated in AX.25 mode */ 319 319 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 320 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 320 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 321 321 322 322 dev->flags = 0; 323 323 } ··· 726 726 } 727 727 728 728 netif_tx_lock_bh(dev); 729 - memcpy(dev->dev_addr, &addr, AX25_ADDR_LEN); 729 + __dev_addr_set(dev, &addr, AX25_ADDR_LEN); 730 730 netif_tx_unlock_bh(dev); 731 731 err = 0; 732 732 break;
+1 -1
drivers/net/hamradio/baycom_epp.c
··· 1159 1159 dev->mtu = AX25_DEF_PACLEN; /* eth_mtu is the default */ 1160 1160 dev->addr_len = AX25_ADDR_LEN; /* sizeof an ax.25 address */ 1161 1161 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 1162 - memcpy(dev->dev_addr, &null_ax25_address, AX25_ADDR_LEN); 1162 + dev_addr_set(dev, (u8 *)&null_ax25_address); 1163 1163 dev->tx_queue_len = 16; 1164 1164 1165 1165 /* New style flags */
+2 -3
drivers/net/hamradio/bpqether.c
··· 457 457 dev->netdev_ops = &bpq_netdev_ops; 458 458 dev->needs_free_netdev = true; 459 459 460 - memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 461 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 462 - 463 460 dev->flags = 0; 464 461 dev->features = NETIF_F_LLTX; /* Allow recursion */ 465 462 ··· 469 472 dev->mtu = AX25_DEF_PACLEN; 470 473 dev->addr_len = AX25_ADDR_LEN; 471 474 475 + memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 476 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 472 477 } 473 478 474 479 /*
+1 -1
drivers/net/hamradio/dmascc.c
··· 426 426 dev->addr_len = AX25_ADDR_LEN; 427 427 dev->tx_queue_len = 64; 428 428 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 429 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 429 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 430 430 } 431 431 432 432 static const struct net_device_ops scc_netdev_ops = {
+1 -1
drivers/net/hamradio/hdlcdrv.c
··· 675 675 dev->mtu = AX25_DEF_PACLEN; /* eth_mtu is the default */ 676 676 dev->addr_len = AX25_ADDR_LEN; /* sizeof an ax.25 address */ 677 677 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 678 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 678 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 679 679 dev->tx_queue_len = 16; 680 680 } 681 681
+3 -3
drivers/net/hamradio/mkiss.c
··· 344 344 345 345 netif_tx_lock_bh(dev); 346 346 netif_addr_lock(dev); 347 - memcpy(dev->dev_addr, &sa->sax25_call, AX25_ADDR_LEN); 347 + __dev_addr_set(dev, &sa->sax25_call, AX25_ADDR_LEN); 348 348 netif_addr_unlock(dev); 349 349 netif_tx_unlock_bh(dev); 350 350 ··· 647 647 648 648 649 649 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 650 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 650 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 651 651 652 652 dev->flags = IFF_BROADCAST | IFF_MULTICAST; 653 653 } ··· 850 850 } 851 851 852 852 netif_tx_lock_bh(dev); 853 - memcpy(dev->dev_addr, addr, AX25_ADDR_LEN); 853 + __dev_addr_set(dev, addr, AX25_ADDR_LEN); 854 854 netif_tx_unlock_bh(dev); 855 855 856 856 err = 0;
+2 -3
drivers/net/hamradio/scc.c
··· 1563 1563 dev->netdev_ops = &scc_netdev_ops; 1564 1564 dev->header_ops = &ax25_header_ops; 1565 1565 1566 - memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 1567 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 1568 - 1569 1566 dev->flags = 0; 1570 1567 1571 1568 dev->type = ARPHRD_AX25; ··· 1570 1573 dev->mtu = AX25_DEF_PACLEN; 1571 1574 dev->addr_len = AX25_ADDR_LEN; 1572 1575 1576 + memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 1577 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 1573 1578 } 1574 1579 1575 1580 /* ----> open network device <---- */
+1 -1
drivers/net/hamradio/yam.c
··· 1107 1107 dev->mtu = AX25_MTU; 1108 1108 dev->addr_len = AX25_ADDR_LEN; 1109 1109 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); 1110 - memcpy(dev->dev_addr, &ax25_defaddr, AX25_ADDR_LEN); 1110 + dev_addr_set(dev, (u8 *)&ax25_defaddr); 1111 1111 } 1112 1112 1113 1113 static int __init yam_init_driver(void)
+2 -2
include/linux/netdevice.h
··· 4643 4643 4644 4644 /* Functions used for device addresses handling */ 4645 4645 static inline void 4646 - __dev_addr_set(struct net_device *dev, const u8 *addr, size_t len) 4646 + __dev_addr_set(struct net_device *dev, const void *addr, size_t len) 4647 4647 { 4648 4648 memcpy(dev->dev_addr, addr, len); 4649 4649 } ··· 4655 4655 4656 4656 static inline void 4657 4657 dev_addr_mod(struct net_device *dev, unsigned int offset, 4658 - const u8 *addr, size_t len) 4658 + const void *addr, size_t len) 4659 4659 { 4660 4660 memcpy(&dev->dev_addr[offset], addr, len); 4661 4661 }
+1 -1
net/ipv4/ip_gre.c
··· 986 986 987 987 __gre_tunnel_init(dev); 988 988 989 - memcpy(dev->dev_addr, &iph->saddr, 4); 989 + __dev_addr_set(dev, &iph->saddr, 4); 990 990 memcpy(dev->broadcast, &iph->daddr, 4); 991 991 992 992 dev->flags = IFF_NOARP;
+1 -1
net/ipv4/ip_tunnel.c
··· 834 834 t->parms.i_key = p->i_key; 835 835 t->parms.o_key = p->o_key; 836 836 if (dev->type != ARPHRD_ETHER) { 837 - memcpy(dev->dev_addr, &p->iph.saddr, 4); 837 + __dev_addr_set(dev, &p->iph.saddr, 4); 838 838 memcpy(dev->broadcast, &p->iph.daddr, 4); 839 839 } 840 840 ip_tunnel_add(itn, t);
+1 -1
net/ipv4/ip_vti.c
··· 425 425 struct ip_tunnel *tunnel = netdev_priv(dev); 426 426 struct iphdr *iph = &tunnel->parms.iph; 427 427 428 - memcpy(dev->dev_addr, &iph->saddr, 4); 428 + __dev_addr_set(dev, &iph->saddr, 4); 429 429 memcpy(dev->broadcast, &iph->daddr, 4); 430 430 431 431 dev->flags = IFF_NOARP;
+1 -1
net/ipv4/ipip.c
··· 380 380 { 381 381 struct ip_tunnel *tunnel = netdev_priv(dev); 382 382 383 - memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); 383 + __dev_addr_set(dev, &tunnel->parms.iph.saddr, 4); 384 384 memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); 385 385 386 386 tunnel->tun_hlen = 0;
+2 -2
net/ipv6/ip6_gre.c
··· 1088 1088 struct flowi6 *fl6 = &t->fl.u.ip6; 1089 1089 1090 1090 if (dev->type != ARPHRD_ETHER) { 1091 - memcpy(dev->dev_addr, &p->laddr, sizeof(struct in6_addr)); 1091 + __dev_addr_set(dev, &p->laddr, sizeof(struct in6_addr)); 1092 1092 memcpy(dev->broadcast, &p->raddr, sizeof(struct in6_addr)); 1093 1093 } 1094 1094 ··· 1521 1521 if (tunnel->parms.collect_md) 1522 1522 return 0; 1523 1523 1524 - memcpy(dev->dev_addr, &tunnel->parms.laddr, sizeof(struct in6_addr)); 1524 + __dev_addr_set(dev, &tunnel->parms.laddr, sizeof(struct in6_addr)); 1525 1525 memcpy(dev->broadcast, &tunnel->parms.raddr, sizeof(struct in6_addr)); 1526 1526 1527 1527 if (ipv6_addr_any(&tunnel->parms.raddr))
+1 -1
net/ipv6/ip6_tunnel.c
··· 1449 1449 unsigned int mtu; 1450 1450 int t_hlen; 1451 1451 1452 - memcpy(dev->dev_addr, &p->laddr, sizeof(struct in6_addr)); 1452 + __dev_addr_set(dev, &p->laddr, sizeof(struct in6_addr)); 1453 1453 memcpy(dev->broadcast, &p->raddr, sizeof(struct in6_addr)); 1454 1454 1455 1455 /* Set up flowi template */
+1 -1
net/ipv6/ip6_vti.c
··· 660 660 struct net_device *tdev = NULL; 661 661 int mtu; 662 662 663 - memcpy(dev->dev_addr, &p->laddr, sizeof(struct in6_addr)); 663 + __dev_addr_set(dev, &p->laddr, sizeof(struct in6_addr)); 664 664 memcpy(dev->broadcast, &p->raddr, sizeof(struct in6_addr)); 665 665 666 666 p->flags &= ~(IP6_TNL_F_CAP_XMIT | IP6_TNL_F_CAP_RCV |
+2 -2
net/ipv6/sit.c
··· 204 204 struct sit_net *sitn = net_generic(net, sit_net_id); 205 205 int err; 206 206 207 - memcpy(dev->dev_addr, &t->parms.iph.saddr, 4); 207 + __dev_addr_set(dev, &t->parms.iph.saddr, 4); 208 208 memcpy(dev->broadcast, &t->parms.iph.daddr, 4); 209 209 210 210 if ((__force u16)t->parms.i_flags & SIT_ISATAP) ··· 1149 1149 synchronize_net(); 1150 1150 t->parms.iph.saddr = p->iph.saddr; 1151 1151 t->parms.iph.daddr = p->iph.daddr; 1152 - memcpy(t->dev->dev_addr, &p->iph.saddr, 4); 1152 + __dev_addr_set(t->dev, &p->iph.saddr, 4); 1153 1153 memcpy(t->dev->broadcast, &p->iph.daddr, 4); 1154 1154 ipip6_tunnel_link(sitn, t); 1155 1155 t->parms.iph.ttl = p->iph.ttl;