aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2017-12-15 11:09:47 -0500
committerDavid S. Miller <davem@davemloft.net>2017-12-18 14:57:48 -0500
commit8b874514c11d6fcf9a92289255bc9c093d1ec706 (patch)
tree82f1b95dcc29f9a6f9dea655dd5d29962e4ace4c
parent2794ffc441dde3109804085dc745e8014a4de224 (diff)
phylink: fix locking asserts
Use ASSERT_RTNL() rather than WARN_ON(!lockdep_rtnl_is_held()) which stops working when lockdep fires, and we end up with lots of warnings. Fixes: 9525ae83959b ("phylink: add phylink infrastructure") Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/phy/phylink.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 69adc0aa141c..f7a777475762 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -807,7 +807,7 @@ void phylink_disconnect_phy(struct phylink *pl)
807{ 807{
808 struct phy_device *phy; 808 struct phy_device *phy;
809 809
810 WARN_ON(!lockdep_rtnl_is_held()); 810 ASSERT_RTNL();
811 811
812 phy = pl->phydev; 812 phy = pl->phydev;
813 if (phy) { 813 if (phy) {
@@ -877,7 +877,7 @@ EXPORT_SYMBOL_GPL(phylink_mac_change);
877 */ 877 */
878void phylink_start(struct phylink *pl) 878void phylink_start(struct phylink *pl)
879{ 879{
880 WARN_ON(!lockdep_rtnl_is_held()); 880 ASSERT_RTNL();
881 881
882 netdev_info(pl->netdev, "configuring for %s/%s link mode\n", 882 netdev_info(pl->netdev, "configuring for %s/%s link mode\n",
883 phylink_an_mode_str(pl->link_an_mode), 883 phylink_an_mode_str(pl->link_an_mode),
@@ -917,7 +917,7 @@ EXPORT_SYMBOL_GPL(phylink_start);
917 */ 917 */
918void phylink_stop(struct phylink *pl) 918void phylink_stop(struct phylink *pl)
919{ 919{
920 WARN_ON(!lockdep_rtnl_is_held()); 920 ASSERT_RTNL();
921 921
922 if (pl->phydev) 922 if (pl->phydev)
923 phy_stop(pl->phydev); 923 phy_stop(pl->phydev);
@@ -941,7 +941,7 @@ EXPORT_SYMBOL_GPL(phylink_stop);
941 */ 941 */
942void phylink_ethtool_get_wol(struct phylink *pl, struct ethtool_wolinfo *wol) 942void phylink_ethtool_get_wol(struct phylink *pl, struct ethtool_wolinfo *wol)
943{ 943{
944 WARN_ON(!lockdep_rtnl_is_held()); 944 ASSERT_RTNL();
945 945
946 wol->supported = 0; 946 wol->supported = 0;
947 wol->wolopts = 0; 947 wol->wolopts = 0;
@@ -966,7 +966,7 @@ int phylink_ethtool_set_wol(struct phylink *pl, struct ethtool_wolinfo *wol)
966{ 966{
967 int ret = -EOPNOTSUPP; 967 int ret = -EOPNOTSUPP;
968 968
969 WARN_ON(!lockdep_rtnl_is_held()); 969 ASSERT_RTNL();
970 970
971 if (pl->phydev) 971 if (pl->phydev)
972 ret = phy_ethtool_set_wol(pl->phydev, wol); 972 ret = phy_ethtool_set_wol(pl->phydev, wol);
@@ -1011,7 +1011,7 @@ int phylink_ethtool_ksettings_get(struct phylink *pl,
1011{ 1011{
1012 struct phylink_link_state link_state; 1012 struct phylink_link_state link_state;
1013 1013
1014 WARN_ON(!lockdep_rtnl_is_held()); 1014 ASSERT_RTNL();
1015 1015
1016 if (pl->phydev) { 1016 if (pl->phydev) {
1017 phy_ethtool_ksettings_get(pl->phydev, kset); 1017 phy_ethtool_ksettings_get(pl->phydev, kset);
@@ -1064,7 +1064,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
1064 struct phylink_link_state config; 1064 struct phylink_link_state config;
1065 int ret; 1065 int ret;
1066 1066
1067 WARN_ON(!lockdep_rtnl_is_held()); 1067 ASSERT_RTNL();
1068 1068
1069 if (kset->base.autoneg != AUTONEG_DISABLE && 1069 if (kset->base.autoneg != AUTONEG_DISABLE &&
1070 kset->base.autoneg != AUTONEG_ENABLE) 1070 kset->base.autoneg != AUTONEG_ENABLE)
@@ -1165,7 +1165,7 @@ int phylink_ethtool_nway_reset(struct phylink *pl)
1165{ 1165{
1166 int ret = 0; 1166 int ret = 0;
1167 1167
1168 WARN_ON(!lockdep_rtnl_is_held()); 1168 ASSERT_RTNL();
1169 1169
1170 if (pl->phydev) 1170 if (pl->phydev)
1171 ret = phy_restart_aneg(pl->phydev); 1171 ret = phy_restart_aneg(pl->phydev);
@@ -1183,7 +1183,7 @@ EXPORT_SYMBOL_GPL(phylink_ethtool_nway_reset);
1183void phylink_ethtool_get_pauseparam(struct phylink *pl, 1183void phylink_ethtool_get_pauseparam(struct phylink *pl,
1184 struct ethtool_pauseparam *pause) 1184 struct ethtool_pauseparam *pause)
1185{ 1185{
1186 WARN_ON(!lockdep_rtnl_is_held()); 1186 ASSERT_RTNL();
1187 1187
1188 pause->autoneg = !!(pl->link_config.pause & MLO_PAUSE_AN); 1188 pause->autoneg = !!(pl->link_config.pause & MLO_PAUSE_AN);
1189 pause->rx_pause = !!(pl->link_config.pause & MLO_PAUSE_RX); 1189 pause->rx_pause = !!(pl->link_config.pause & MLO_PAUSE_RX);
@@ -1201,7 +1201,7 @@ int phylink_ethtool_set_pauseparam(struct phylink *pl,
1201{ 1201{
1202 struct phylink_link_state *config = &pl->link_config; 1202 struct phylink_link_state *config = &pl->link_config;
1203 1203
1204 WARN_ON(!lockdep_rtnl_is_held()); 1204 ASSERT_RTNL();
1205 1205
1206 if (!phylink_test(pl->supported, Pause) && 1206 if (!phylink_test(pl->supported, Pause) &&
1207 !phylink_test(pl->supported, Asym_Pause)) 1207 !phylink_test(pl->supported, Asym_Pause))
@@ -1287,7 +1287,7 @@ int phylink_get_eee_err(struct phylink *pl)
1287{ 1287{
1288 int ret = 0; 1288 int ret = 0;
1289 1289
1290 WARN_ON(!lockdep_rtnl_is_held()); 1290 ASSERT_RTNL();
1291 1291
1292 if (pl->phydev) 1292 if (pl->phydev)
1293 ret = phy_get_eee_err(pl->phydev); 1293 ret = phy_get_eee_err(pl->phydev);
@@ -1305,7 +1305,7 @@ int phylink_ethtool_get_eee(struct phylink *pl, struct ethtool_eee *eee)
1305{ 1305{
1306 int ret = -EOPNOTSUPP; 1306 int ret = -EOPNOTSUPP;
1307 1307
1308 WARN_ON(!lockdep_rtnl_is_held()); 1308 ASSERT_RTNL();
1309 1309
1310 if (pl->phydev) 1310 if (pl->phydev)
1311 ret = phy_ethtool_get_eee(pl->phydev, eee); 1311 ret = phy_ethtool_get_eee(pl->phydev, eee);
@@ -1323,7 +1323,7 @@ int phylink_ethtool_set_eee(struct phylink *pl, struct ethtool_eee *eee)
1323{ 1323{
1324 int ret = -EOPNOTSUPP; 1324 int ret = -EOPNOTSUPP;
1325 1325
1326 WARN_ON(!lockdep_rtnl_is_held()); 1326 ASSERT_RTNL();
1327 1327
1328 if (pl->phydev) 1328 if (pl->phydev)
1329 ret = phy_ethtool_set_eee(pl->phydev, eee); 1329 ret = phy_ethtool_set_eee(pl->phydev, eee);
@@ -1513,7 +1513,7 @@ int phylink_mii_ioctl(struct phylink *pl, struct ifreq *ifr, int cmd)
1513 struct mii_ioctl_data *mii = if_mii(ifr); 1513 struct mii_ioctl_data *mii = if_mii(ifr);
1514 int ret; 1514 int ret;
1515 1515
1516 WARN_ON(!lockdep_rtnl_is_held()); 1516 ASSERT_RTNL();
1517 1517
1518 if (pl->phydev) { 1518 if (pl->phydev) {
1519 /* PHYs only exist for MLO_AN_PHY and SGMII */ 1519 /* PHYs only exist for MLO_AN_PHY and SGMII */
@@ -1581,7 +1581,7 @@ static int phylink_sfp_module_insert(void *upstream,
1581 port = sfp_parse_port(pl->sfp_bus, id, support); 1581 port = sfp_parse_port(pl->sfp_bus, id, support);
1582 iface = sfp_parse_interface(pl->sfp_bus, id); 1582 iface = sfp_parse_interface(pl->sfp_bus, id);
1583 1583
1584 WARN_ON(!lockdep_rtnl_is_held()); 1584 ASSERT_RTNL();
1585 1585
1586 switch (iface) { 1586 switch (iface) {
1587 case PHY_INTERFACE_MODE_SGMII: 1587 case PHY_INTERFACE_MODE_SGMII:
@@ -1650,7 +1650,7 @@ static void phylink_sfp_link_down(void *upstream)
1650{ 1650{
1651 struct phylink *pl = upstream; 1651 struct phylink *pl = upstream;
1652 1652
1653 WARN_ON(!lockdep_rtnl_is_held()); 1653 ASSERT_RTNL();
1654 1654
1655 set_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state); 1655 set_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state);
1656 flush_work(&pl->resolve); 1656 flush_work(&pl->resolve);
@@ -1662,7 +1662,7 @@ static void phylink_sfp_link_up(void *upstream)
1662{ 1662{
1663 struct phylink *pl = upstream; 1663 struct phylink *pl = upstream;
1664 1664
1665 WARN_ON(!lockdep_rtnl_is_held()); 1665 ASSERT_RTNL();
1666 1666
1667 clear_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state); 1667 clear_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state);
1668 phylink_run_resolve(pl); 1668 phylink_run_resolve(pl);