aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/r8152.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/r8152.c')
-rw-r--r--drivers/net/usb/r8152.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 65326204baa0..5cfd414b9a3e 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -980,9 +980,14 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
980{ 980{
981 struct r8152 *tp = netdev_priv(netdev); 981 struct r8152 *tp = netdev_priv(netdev);
982 struct sockaddr *addr = p; 982 struct sockaddr *addr = p;
983 int ret = -EADDRNOTAVAIL;
983 984
984 if (!is_valid_ether_addr(addr->sa_data)) 985 if (!is_valid_ether_addr(addr->sa_data))
985 return -EADDRNOTAVAIL; 986 goto out1;
987
988 ret = usb_autopm_get_interface(tp->intf);
989 if (ret < 0)
990 goto out1;
986 991
987 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); 992 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
988 993
@@ -990,7 +995,9 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
990 pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data); 995 pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
991 ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML); 996 ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_NORAML);
992 997
993 return 0; 998 usb_autopm_put_interface(tp->intf);
999out1:
1000 return ret;
994} 1001}
995 1002
996static int set_ethernet_addr(struct r8152 *tp) 1003static int set_ethernet_addr(struct r8152 *tp)