Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
include/linux/netdevice.h net/socket.cd0efb16294("net: don't unconditionally copy_from_user a struct ifreq for socket ioctls")876f0bf9d0("net: socket: simplify dev_ifconf handling")29c4964822("net: socket: rework compat_ifreq_ioctl()") Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -5122,6 +5122,7 @@ static int ice_set_mac_address(struct net_device *netdev, void *pi)
|
||||
struct ice_hw *hw = &pf->hw;
|
||||
struct sockaddr *addr = pi;
|
||||
enum ice_status status;
|
||||
u8 old_mac[ETH_ALEN];
|
||||
u8 flags = 0;
|
||||
int err = 0;
|
||||
u8 *mac;
|
||||
@@ -5144,8 +5145,13 @@ static int ice_set_mac_address(struct net_device *netdev, void *pi)
|
||||
}
|
||||
|
||||
netif_addr_lock_bh(netdev);
|
||||
ether_addr_copy(old_mac, netdev->dev_addr);
|
||||
/* change the netdev's MAC address */
|
||||
memcpy(netdev->dev_addr, mac, netdev->addr_len);
|
||||
netif_addr_unlock_bh(netdev);
|
||||
|
||||
/* Clean up old MAC filter. Not an error if old filter doesn't exist */
|
||||
status = ice_fltr_remove_mac(vsi, netdev->dev_addr, ICE_FWD_TO_VSI);
|
||||
status = ice_fltr_remove_mac(vsi, old_mac, ICE_FWD_TO_VSI);
|
||||
if (status && status != ICE_ERR_DOES_NOT_EXIST) {
|
||||
err = -EADDRNOTAVAIL;
|
||||
goto err_update_filters;
|
||||
@@ -5168,13 +5174,12 @@ err_update_filters:
|
||||
if (err) {
|
||||
netdev_err(netdev, "can't set MAC %pM. filter update failed\n",
|
||||
mac);
|
||||
netif_addr_lock_bh(netdev);
|
||||
ether_addr_copy(netdev->dev_addr, old_mac);
|
||||
netif_addr_unlock_bh(netdev);
|
||||
return err;
|
||||
}
|
||||
|
||||
/* change the netdev's MAC address */
|
||||
memcpy(netdev->dev_addr, mac, netdev->addr_len);
|
||||
netif_addr_unlock_bh(netdev);
|
||||
netdev_dbg(vsi->netdev, "updated MAC address to %pM\n",
|
||||
netdev->dev_addr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user