phylink: fix locking asserts
authorRussell King <rmk+kernel@armlinux.org.uk>
Fri, 15 Dec 2017 16:09:47 +0000 (16:09 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Dec 2017 19:57:48 +0000 (14:57 -0500)
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>
drivers/net/phy/phylink.c

index 69adc0aa141c401830bc252a07b6b11d30385129..f7a77747576247d993da18762b09461673854a16 100644 (file)
@@ -807,7 +807,7 @@ void phylink_disconnect_phy(struct phylink *pl)
 {
        struct phy_device *phy;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        phy = pl->phydev;
        if (phy) {
@@ -877,7 +877,7 @@ EXPORT_SYMBOL_GPL(phylink_mac_change);
  */
 void phylink_start(struct phylink *pl)
 {
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        netdev_info(pl->netdev, "configuring for %s/%s link mode\n",
                    phylink_an_mode_str(pl->link_an_mode),
@@ -917,7 +917,7 @@ EXPORT_SYMBOL_GPL(phylink_start);
  */
 void phylink_stop(struct phylink *pl)
 {
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev)
                phy_stop(pl->phydev);
@@ -941,7 +941,7 @@ EXPORT_SYMBOL_GPL(phylink_stop);
  */
 void phylink_ethtool_get_wol(struct phylink *pl, struct ethtool_wolinfo *wol)
 {
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        wol->supported = 0;
        wol->wolopts = 0;
@@ -966,7 +966,7 @@ int phylink_ethtool_set_wol(struct phylink *pl, struct ethtool_wolinfo *wol)
 {
        int ret = -EOPNOTSUPP;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev)
                ret = phy_ethtool_set_wol(pl->phydev, wol);
@@ -1011,7 +1011,7 @@ int phylink_ethtool_ksettings_get(struct phylink *pl,
 {
        struct phylink_link_state link_state;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev) {
                phy_ethtool_ksettings_get(pl->phydev, kset);
@@ -1064,7 +1064,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
        struct phylink_link_state config;
        int ret;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (kset->base.autoneg != AUTONEG_DISABLE &&
            kset->base.autoneg != AUTONEG_ENABLE)
@@ -1165,7 +1165,7 @@ int phylink_ethtool_nway_reset(struct phylink *pl)
 {
        int ret = 0;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev)
                ret = phy_restart_aneg(pl->phydev);
@@ -1183,7 +1183,7 @@ EXPORT_SYMBOL_GPL(phylink_ethtool_nway_reset);
 void phylink_ethtool_get_pauseparam(struct phylink *pl,
                                    struct ethtool_pauseparam *pause)
 {
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        pause->autoneg = !!(pl->link_config.pause & MLO_PAUSE_AN);
        pause->rx_pause = !!(pl->link_config.pause & MLO_PAUSE_RX);
@@ -1201,7 +1201,7 @@ int phylink_ethtool_set_pauseparam(struct phylink *pl,
 {
        struct phylink_link_state *config = &pl->link_config;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (!phylink_test(pl->supported, Pause) &&
            !phylink_test(pl->supported, Asym_Pause))
@@ -1287,7 +1287,7 @@ int phylink_get_eee_err(struct phylink *pl)
 {
        int ret = 0;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev)
                ret = phy_get_eee_err(pl->phydev);
@@ -1305,7 +1305,7 @@ int phylink_ethtool_get_eee(struct phylink *pl, struct ethtool_eee *eee)
 {
        int ret = -EOPNOTSUPP;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev)
                ret = phy_ethtool_get_eee(pl->phydev, eee);
@@ -1323,7 +1323,7 @@ int phylink_ethtool_set_eee(struct phylink *pl, struct ethtool_eee *eee)
 {
        int ret = -EOPNOTSUPP;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev)
                ret = phy_ethtool_set_eee(pl->phydev, eee);
@@ -1513,7 +1513,7 @@ int phylink_mii_ioctl(struct phylink *pl, struct ifreq *ifr, int cmd)
        struct mii_ioctl_data *mii = if_mii(ifr);
        int  ret;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        if (pl->phydev) {
                /* PHYs only exist for MLO_AN_PHY and SGMII */
@@ -1581,7 +1581,7 @@ static int phylink_sfp_module_insert(void *upstream,
        port = sfp_parse_port(pl->sfp_bus, id, support);
        iface = sfp_parse_interface(pl->sfp_bus, id);
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        switch (iface) {
        case PHY_INTERFACE_MODE_SGMII:
@@ -1650,7 +1650,7 @@ static void phylink_sfp_link_down(void *upstream)
 {
        struct phylink *pl = upstream;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        set_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state);
        flush_work(&pl->resolve);
@@ -1662,7 +1662,7 @@ static void phylink_sfp_link_up(void *upstream)
 {
        struct phylink *pl = upstream;
 
-       WARN_ON(!lockdep_rtnl_is_held());
+       ASSERT_RTNL();
 
        clear_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state);
        phylink_run_resolve(pl);