diff options
| -rw-r--r-- | drivers/net/bonding/bond_alb.c | 9 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 15 | ||||
| -rw-r--r-- | drivers/net/hyperv/netvsc_drv.c | 4 | ||||
| -rw-r--r-- | drivers/net/macvlan.c | 4 | ||||
| -rw-r--r-- | drivers/net/tap.c | 2 | ||||
| -rw-r--r-- | drivers/net/team/team.c | 2 | ||||
| -rw-r--r-- | drivers/net/tun.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/function/u_ether.c | 2 | ||||
| -rw-r--r-- | include/linux/netdevice.h | 3 | ||||
| -rw-r--r-- | net/core/dev.c | 4 | ||||
| -rw-r--r-- | net/core/dev_ioctl.c | 2 | ||||
| -rw-r--r-- | net/core/rtnetlink.c | 2 | ||||
| -rw-r--r-- | net/ieee802154/nl-phy.c | 2 |
13 files changed, 29 insertions, 24 deletions
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index e82108c917a6..9431127bbc60 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c | |||
| @@ -1031,7 +1031,7 @@ static int alb_set_slave_mac_addr(struct slave *slave, u8 addr[], | |||
| 1031 | */ | 1031 | */ |
| 1032 | memcpy(ss.__data, addr, len); | 1032 | memcpy(ss.__data, addr, len); |
| 1033 | ss.ss_family = dev->type; | 1033 | ss.ss_family = dev->type; |
| 1034 | if (dev_set_mac_address(dev, (struct sockaddr *)&ss)) { | 1034 | if (dev_set_mac_address(dev, (struct sockaddr *)&ss, NULL)) { |
| 1035 | netdev_err(slave->bond->dev, "dev_set_mac_address of dev %s failed! ALB mode requires that the base driver support setting the hw address also when the network device's interface is open\n", | 1035 | netdev_err(slave->bond->dev, "dev_set_mac_address of dev %s failed! ALB mode requires that the base driver support setting the hw address also when the network device's interface is open\n", |
| 1036 | dev->name); | 1036 | dev->name); |
| 1037 | return -EOPNOTSUPP; | 1037 | return -EOPNOTSUPP; |
| @@ -1250,7 +1250,7 @@ static int alb_set_mac_address(struct bonding *bond, void *addr) | |||
| 1250 | bond_hw_addr_copy(tmp_addr, slave->dev->dev_addr, | 1250 | bond_hw_addr_copy(tmp_addr, slave->dev->dev_addr, |
| 1251 | slave->dev->addr_len); | 1251 | slave->dev->addr_len); |
| 1252 | 1252 | ||
| 1253 | res = dev_set_mac_address(slave->dev, addr); | 1253 | res = dev_set_mac_address(slave->dev, addr, NULL); |
| 1254 | 1254 | ||
| 1255 | /* restore net_device's hw address */ | 1255 | /* restore net_device's hw address */ |
| 1256 | bond_hw_addr_copy(slave->dev->dev_addr, tmp_addr, | 1256 | bond_hw_addr_copy(slave->dev->dev_addr, tmp_addr, |
| @@ -1273,7 +1273,7 @@ unwind: | |||
| 1273 | bond_hw_addr_copy(tmp_addr, rollback_slave->dev->dev_addr, | 1273 | bond_hw_addr_copy(tmp_addr, rollback_slave->dev->dev_addr, |
| 1274 | rollback_slave->dev->addr_len); | 1274 | rollback_slave->dev->addr_len); |
| 1275 | dev_set_mac_address(rollback_slave->dev, | 1275 | dev_set_mac_address(rollback_slave->dev, |
| 1276 | (struct sockaddr *)&ss); | 1276 | (struct sockaddr *)&ss, NULL); |
| 1277 | bond_hw_addr_copy(rollback_slave->dev->dev_addr, tmp_addr, | 1277 | bond_hw_addr_copy(rollback_slave->dev->dev_addr, tmp_addr, |
| 1278 | rollback_slave->dev->addr_len); | 1278 | rollback_slave->dev->addr_len); |
| 1279 | } | 1279 | } |
| @@ -1732,7 +1732,8 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave | |||
| 1732 | bond->dev->addr_len); | 1732 | bond->dev->addr_len); |
| 1733 | ss.ss_family = bond->dev->type; | 1733 | ss.ss_family = bond->dev->type; |
| 1734 | /* we don't care if it can't change its mac, best effort */ | 1734 | /* we don't care if it can't change its mac, best effort */ |
| 1735 | dev_set_mac_address(new_slave->dev, (struct sockaddr *)&ss); | 1735 | dev_set_mac_address(new_slave->dev, (struct sockaddr *)&ss, |
| 1736 | NULL); | ||
| 1736 | 1737 | ||
| 1737 | bond_hw_addr_copy(new_slave->dev->dev_addr, tmp_addr, | 1738 | bond_hw_addr_copy(new_slave->dev->dev_addr, tmp_addr, |
| 1738 | new_slave->dev->addr_len); | 1739 | new_slave->dev->addr_len); |
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 6b34dbefa7dd..06039be63034 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -680,7 +680,7 @@ static void bond_do_fail_over_mac(struct bonding *bond, | |||
| 680 | } | 680 | } |
| 681 | 681 | ||
| 682 | rv = dev_set_mac_address(new_active->dev, | 682 | rv = dev_set_mac_address(new_active->dev, |
| 683 | (struct sockaddr *)&ss); | 683 | (struct sockaddr *)&ss, NULL); |
| 684 | if (rv) { | 684 | if (rv) { |
| 685 | netdev_err(bond->dev, "Error %d setting MAC of slave %s\n", | 685 | netdev_err(bond->dev, "Error %d setting MAC of slave %s\n", |
| 686 | -rv, new_active->dev->name); | 686 | -rv, new_active->dev->name); |
| @@ -695,7 +695,7 @@ static void bond_do_fail_over_mac(struct bonding *bond, | |||
| 695 | ss.ss_family = old_active->dev->type; | 695 | ss.ss_family = old_active->dev->type; |
| 696 | 696 | ||
| 697 | rv = dev_set_mac_address(old_active->dev, | 697 | rv = dev_set_mac_address(old_active->dev, |
| 698 | (struct sockaddr *)&ss); | 698 | (struct sockaddr *)&ss, NULL); |
| 699 | if (rv) | 699 | if (rv) |
| 700 | netdev_err(bond->dev, "Error %d setting MAC of slave %s\n", | 700 | netdev_err(bond->dev, "Error %d setting MAC of slave %s\n", |
| 701 | -rv, new_active->dev->name); | 701 | -rv, new_active->dev->name); |
| @@ -1527,7 +1527,8 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev, | |||
| 1527 | */ | 1527 | */ |
| 1528 | memcpy(ss.__data, bond_dev->dev_addr, bond_dev->addr_len); | 1528 | memcpy(ss.__data, bond_dev->dev_addr, bond_dev->addr_len); |
| 1529 | ss.ss_family = slave_dev->type; | 1529 | ss.ss_family = slave_dev->type; |
| 1530 | res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss); | 1530 | res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, |
| 1531 | extack); | ||
| 1531 | if (res) { | 1532 | if (res) { |
| 1532 | netdev_dbg(bond_dev, "Error %d calling set_mac_address\n", res); | 1533 | netdev_dbg(bond_dev, "Error %d calling set_mac_address\n", res); |
| 1533 | goto err_restore_mtu; | 1534 | goto err_restore_mtu; |
| @@ -1818,7 +1819,7 @@ err_restore_mac: | |||
| 1818 | bond_hw_addr_copy(ss.__data, new_slave->perm_hwaddr, | 1819 | bond_hw_addr_copy(ss.__data, new_slave->perm_hwaddr, |
| 1819 | new_slave->dev->addr_len); | 1820 | new_slave->dev->addr_len); |
| 1820 | ss.ss_family = slave_dev->type; | 1821 | ss.ss_family = slave_dev->type; |
| 1821 | dev_set_mac_address(slave_dev, (struct sockaddr *)&ss); | 1822 | dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, NULL); |
| 1822 | } | 1823 | } |
| 1823 | 1824 | ||
| 1824 | err_restore_mtu: | 1825 | err_restore_mtu: |
| @@ -1999,7 +2000,7 @@ static int __bond_release_one(struct net_device *bond_dev, | |||
| 1999 | bond_hw_addr_copy(ss.__data, slave->perm_hwaddr, | 2000 | bond_hw_addr_copy(ss.__data, slave->perm_hwaddr, |
| 2000 | slave->dev->addr_len); | 2001 | slave->dev->addr_len); |
| 2001 | ss.ss_family = slave_dev->type; | 2002 | ss.ss_family = slave_dev->type; |
| 2002 | dev_set_mac_address(slave_dev, (struct sockaddr *)&ss); | 2003 | dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, NULL); |
| 2003 | } | 2004 | } |
| 2004 | 2005 | ||
| 2005 | if (unregister) | 2006 | if (unregister) |
| @@ -3732,7 +3733,7 @@ static int bond_set_mac_address(struct net_device *bond_dev, void *addr) | |||
| 3732 | 3733 | ||
| 3733 | bond_for_each_slave(bond, slave, iter) { | 3734 | bond_for_each_slave(bond, slave, iter) { |
| 3734 | netdev_dbg(bond_dev, "slave %p %s\n", slave, slave->dev->name); | 3735 | netdev_dbg(bond_dev, "slave %p %s\n", slave, slave->dev->name); |
| 3735 | res = dev_set_mac_address(slave->dev, addr); | 3736 | res = dev_set_mac_address(slave->dev, addr, NULL); |
| 3736 | if (res) { | 3737 | if (res) { |
| 3737 | /* TODO: consider downing the slave | 3738 | /* TODO: consider downing the slave |
| 3738 | * and retry ? | 3739 | * and retry ? |
| @@ -3761,7 +3762,7 @@ unwind: | |||
| 3761 | break; | 3762 | break; |
| 3762 | 3763 | ||
| 3763 | tmp_res = dev_set_mac_address(rollback_slave->dev, | 3764 | tmp_res = dev_set_mac_address(rollback_slave->dev, |
| 3764 | (struct sockaddr *)&tmp_ss); | 3765 | (struct sockaddr *)&tmp_ss, NULL); |
| 3765 | if (tmp_res) { | 3766 | if (tmp_res) { |
| 3766 | netdev_dbg(bond_dev, "unwind err %d dev %s\n", | 3767 | netdev_dbg(bond_dev, "unwind err %d dev %s\n", |
| 3767 | tmp_res, rollback_slave->dev->name); | 3768 | tmp_res, rollback_slave->dev->name); |
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 18b5584d6377..91ed15ea5883 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c | |||
| @@ -1247,7 +1247,7 @@ static int netvsc_set_mac_addr(struct net_device *ndev, void *p) | |||
| 1247 | return -ENODEV; | 1247 | return -ENODEV; |
| 1248 | 1248 | ||
| 1249 | if (vf_netdev) { | 1249 | if (vf_netdev) { |
| 1250 | err = dev_set_mac_address(vf_netdev, addr); | 1250 | err = dev_set_mac_address(vf_netdev, addr, NULL); |
| 1251 | if (err) | 1251 | if (err) |
| 1252 | return err; | 1252 | return err; |
| 1253 | } | 1253 | } |
| @@ -1258,7 +1258,7 @@ static int netvsc_set_mac_addr(struct net_device *ndev, void *p) | |||
| 1258 | } else if (vf_netdev) { | 1258 | } else if (vf_netdev) { |
| 1259 | /* rollback change on VF */ | 1259 | /* rollback change on VF */ |
| 1260 | memcpy(addr->sa_data, ndev->dev_addr, ETH_ALEN); | 1260 | memcpy(addr->sa_data, ndev->dev_addr, ETH_ALEN); |
| 1261 | dev_set_mac_address(vf_netdev, addr); | 1261 | dev_set_mac_address(vf_netdev, addr, NULL); |
| 1262 | } | 1262 | } |
| 1263 | 1263 | ||
| 1264 | return err; | 1264 | return err; |
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 0da3d36b283b..fc726ce4c164 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
| @@ -744,7 +744,7 @@ static int macvlan_set_mac_address(struct net_device *dev, void *p) | |||
| 744 | 744 | ||
| 745 | if (vlan->mode == MACVLAN_MODE_PASSTHRU) { | 745 | if (vlan->mode == MACVLAN_MODE_PASSTHRU) { |
| 746 | macvlan_set_addr_change(vlan->port); | 746 | macvlan_set_addr_change(vlan->port); |
| 747 | return dev_set_mac_address(vlan->lowerdev, addr); | 747 | return dev_set_mac_address(vlan->lowerdev, addr, NULL); |
| 748 | } | 748 | } |
| 749 | 749 | ||
| 750 | if (macvlan_addr_busy(vlan->port, addr->sa_data)) | 750 | if (macvlan_addr_busy(vlan->port, addr->sa_data)) |
| @@ -1213,7 +1213,7 @@ static void macvlan_port_destroy(struct net_device *dev) | |||
| 1213 | 1213 | ||
| 1214 | sa.sa_family = port->dev->type; | 1214 | sa.sa_family = port->dev->type; |
| 1215 | memcpy(&sa.sa_data, port->perm_addr, port->dev->addr_len); | 1215 | memcpy(&sa.sa_data, port->perm_addr, port->dev->addr_len); |
| 1216 | dev_set_mac_address(port->dev, &sa); | 1216 | dev_set_mac_address(port->dev, &sa, NULL); |
| 1217 | } | 1217 | } |
| 1218 | 1218 | ||
| 1219 | kfree(port); | 1219 | kfree(port); |
diff --git a/drivers/net/tap.c b/drivers/net/tap.c index f03004f37eca..443b2694130c 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c | |||
| @@ -1113,7 +1113,7 @@ static long tap_ioctl(struct file *file, unsigned int cmd, | |||
| 1113 | rtnl_unlock(); | 1113 | rtnl_unlock(); |
| 1114 | return -ENOLINK; | 1114 | return -ENOLINK; |
| 1115 | } | 1115 | } |
| 1116 | ret = dev_set_mac_address(tap->dev, &sa); | 1116 | ret = dev_set_mac_address(tap->dev, &sa, NULL); |
| 1117 | tap_put_tap_dev(tap); | 1117 | tap_put_tap_dev(tap); |
| 1118 | rtnl_unlock(); | 1118 | rtnl_unlock(); |
| 1119 | return ret; | 1119 | return ret; |
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index 93576e0240dd..afd9d25d1992 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c | |||
| @@ -59,7 +59,7 @@ static int __set_port_dev_addr(struct net_device *port_dev, | |||
| 59 | 59 | ||
| 60 | memcpy(addr.__data, dev_addr, port_dev->addr_len); | 60 | memcpy(addr.__data, dev_addr, port_dev->addr_len); |
| 61 | addr.ss_family = port_dev->type; | 61 | addr.ss_family = port_dev->type; |
| 62 | return dev_set_mac_address(port_dev, (struct sockaddr *)&addr); | 62 | return dev_set_mac_address(port_dev, (struct sockaddr *)&addr, NULL); |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | static int team_port_set_orig_dev_addr(struct team_port *port) | 65 | static int team_port_set_orig_dev_addr(struct team_port *port) |
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index ea528248d7d0..72577aa35b06 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c | |||
| @@ -3202,7 +3202,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, | |||
| 3202 | tun_debug(KERN_DEBUG, tun, "set hw address: %pM\n", | 3202 | tun_debug(KERN_DEBUG, tun, "set hw address: %pM\n", |
| 3203 | ifr.ifr_hwaddr.sa_data); | 3203 | ifr.ifr_hwaddr.sa_data); |
| 3204 | 3204 | ||
| 3205 | ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr); | 3205 | ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr, NULL); |
| 3206 | break; | 3206 | break; |
| 3207 | 3207 | ||
| 3208 | case TUNGETSNDBUF: | 3208 | case TUNGETSNDBUF: |
diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c index 0f026d445e31..737bd77a575d 100644 --- a/drivers/usb/gadget/function/u_ether.c +++ b/drivers/usb/gadget/function/u_ether.c | |||
| @@ -879,7 +879,7 @@ int gether_register_netdev(struct net_device *net) | |||
| 879 | sa.sa_family = net->type; | 879 | sa.sa_family = net->type; |
| 880 | memcpy(sa.sa_data, dev->dev_mac, ETH_ALEN); | 880 | memcpy(sa.sa_data, dev->dev_mac, ETH_ALEN); |
| 881 | rtnl_lock(); | 881 | rtnl_lock(); |
| 882 | status = dev_set_mac_address(net, &sa); | 882 | status = dev_set_mac_address(net, &sa, NULL); |
| 883 | rtnl_unlock(); | 883 | rtnl_unlock(); |
| 884 | if (status) | 884 | if (status) |
| 885 | pr_warn("cannot set self ethernet address: %d\n", status); | 885 | pr_warn("cannot set self ethernet address: %d\n", status); |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 36ca5f50f822..d89875ec21ac 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -3628,7 +3628,8 @@ int dev_set_mtu_ext(struct net_device *dev, int mtu, | |||
| 3628 | int dev_set_mtu(struct net_device *, int); | 3628 | int dev_set_mtu(struct net_device *, int); |
| 3629 | int dev_change_tx_queue_len(struct net_device *, unsigned long); | 3629 | int dev_change_tx_queue_len(struct net_device *, unsigned long); |
| 3630 | void dev_set_group(struct net_device *, int); | 3630 | void dev_set_group(struct net_device *, int); |
| 3631 | int dev_set_mac_address(struct net_device *, struct sockaddr *); | 3631 | int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa, |
| 3632 | struct netlink_ext_ack *extack); | ||
| 3632 | int dev_change_carrier(struct net_device *, bool new_carrier); | 3633 | int dev_change_carrier(struct net_device *, bool new_carrier); |
| 3633 | int dev_get_phys_port_id(struct net_device *dev, | 3634 | int dev_get_phys_port_id(struct net_device *dev, |
| 3634 | struct netdev_phys_item_id *ppid); | 3635 | struct netdev_phys_item_id *ppid); |
diff --git a/net/core/dev.c b/net/core/dev.c index 754284873355..7250a3a73fa4 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -7759,10 +7759,12 @@ EXPORT_SYMBOL(dev_set_group); | |||
| 7759 | * dev_set_mac_address - Change Media Access Control Address | 7759 | * dev_set_mac_address - Change Media Access Control Address |
| 7760 | * @dev: device | 7760 | * @dev: device |
| 7761 | * @sa: new address | 7761 | * @sa: new address |
| 7762 | * @extack: netlink extended ack | ||
| 7762 | * | 7763 | * |
| 7763 | * Change the hardware (MAC) address of the device | 7764 | * Change the hardware (MAC) address of the device |
| 7764 | */ | 7765 | */ |
| 7765 | int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa) | 7766 | int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa, |
| 7767 | struct netlink_ext_ack *extack) | ||
| 7766 | { | 7768 | { |
| 7767 | const struct net_device_ops *ops = dev->netdev_ops; | 7769 | const struct net_device_ops *ops = dev->netdev_ops; |
| 7768 | int err; | 7770 | int err; |
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c index da273ec3cc57..31380fd5a4e2 100644 --- a/net/core/dev_ioctl.c +++ b/net/core/dev_ioctl.c | |||
| @@ -246,7 +246,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) | |||
| 246 | case SIOCSIFHWADDR: | 246 | case SIOCSIFHWADDR: |
| 247 | if (dev->addr_len > sizeof(struct sockaddr)) | 247 | if (dev->addr_len > sizeof(struct sockaddr)) |
| 248 | return -EINVAL; | 248 | return -EINVAL; |
| 249 | return dev_set_mac_address(dev, &ifr->ifr_hwaddr); | 249 | return dev_set_mac_address(dev, &ifr->ifr_hwaddr, NULL); |
| 250 | 250 | ||
| 251 | case SIOCSIFHWBROADCAST: | 251 | case SIOCSIFHWBROADCAST: |
| 252 | if (ifr->ifr_hwaddr.sa_family != dev->type) | 252 | if (ifr->ifr_hwaddr.sa_family != dev->type) |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 3b6e551f9e69..f8bdb8adab2c 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
| @@ -2444,7 +2444,7 @@ static int do_setlink(const struct sk_buff *skb, | |||
| 2444 | sa->sa_family = dev->type; | 2444 | sa->sa_family = dev->type; |
| 2445 | memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]), | 2445 | memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]), |
| 2446 | dev->addr_len); | 2446 | dev->addr_len); |
| 2447 | err = dev_set_mac_address(dev, sa); | 2447 | err = dev_set_mac_address(dev, sa, extack); |
| 2448 | kfree(sa); | 2448 | kfree(sa); |
| 2449 | if (err) | 2449 | if (err) |
| 2450 | goto errout; | 2450 | goto errout; |
diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c index b231e40f006a..0c25c0bcc4da 100644 --- a/net/ieee802154/nl-phy.c +++ b/net/ieee802154/nl-phy.c | |||
| @@ -242,7 +242,7 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info) | |||
| 242 | * dev_set_mac_address require RTNL_LOCK | 242 | * dev_set_mac_address require RTNL_LOCK |
| 243 | */ | 243 | */ |
| 244 | rtnl_lock(); | 244 | rtnl_lock(); |
| 245 | rc = dev_set_mac_address(dev, &addr); | 245 | rc = dev_set_mac_address(dev, &addr, NULL); |
| 246 | rtnl_unlock(); | 246 | rtnl_unlock(); |
| 247 | if (rc) | 247 | if (rc) |
| 248 | goto dev_unregister; | 248 | goto dev_unregister; |
