]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
net: ethernet: ave: Avoid lockdep warning
authorKunihiko Hayashi <hayashi.kunihiko@socionext.com>
Wed, 15 Jan 2020 04:02:42 +0000 (13:02 +0900)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 14 Feb 2020 06:00:53 +0000 (01:00 -0500)
BugLink: https://bugs.launchpad.net/bugs/1862429
[ Upstream commit 82d5d6a638cbd12b7dfe8acafd9efd87a656cc06 ]

When building with PROVE_LOCKING=y, lockdep shows the following
dump message.

    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
     ...

Calling device_set_wakeup_enable() directly occurs this issue,
and it isn't necessary for initialization, so this patch creates
internal function __ave_ethtool_set_wol() and replaces with this
in ave_init() and ave_resume().

Fixes: 7200f2e3c9e2 ("net: ethernet: ave: Set initial wol state to disabled")
Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/net/ethernet/socionext/sni_ave.c

index 51a7b48db4bca4b16a517be4dbec68744939b502..f4924a435fcd8b72ae929dab6f318131bc2b56fc 100644 (file)
@@ -424,16 +424,22 @@ static void ave_ethtool_get_wol(struct net_device *ndev,
                phy_ethtool_get_wol(ndev->phydev, wol);
 }
 
-static int ave_ethtool_set_wol(struct net_device *ndev,
-                              struct ethtool_wolinfo *wol)
+static int __ave_ethtool_set_wol(struct net_device *ndev,
+                                struct ethtool_wolinfo *wol)
 {
-       int ret;
-
        if (!ndev->phydev ||
            (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE)))
                return -EOPNOTSUPP;
 
-       ret = phy_ethtool_set_wol(ndev->phydev, wol);
+       return phy_ethtool_set_wol(ndev->phydev, wol);
+}
+
+static int ave_ethtool_set_wol(struct net_device *ndev,
+                              struct ethtool_wolinfo *wol)
+{
+       int ret;
+
+       ret = __ave_ethtool_set_wol(ndev, wol);
        if (!ret)
                device_set_wakeup_enable(&ndev->dev, !!wol->wolopts);
 
@@ -1216,7 +1222,7 @@ static int ave_init(struct net_device *ndev)
 
        /* set wol initial state disabled */
        wol.wolopts = 0;
-       ave_ethtool_set_wol(ndev, &wol);
+       __ave_ethtool_set_wol(ndev, &wol);
 
        if (!phy_interface_is_rgmii(phydev))
                phy_set_max_speed(phydev, SPEED_100);
@@ -1772,7 +1778,7 @@ static int ave_resume(struct device *dev)
 
        ave_ethtool_get_wol(ndev, &wol);
        wol.wolopts = priv->wolopts;
-       ave_ethtool_set_wol(ndev, &wol);
+       __ave_ethtool_set_wol(ndev, &wol);
 
        if (ndev->phydev) {
                ret = phy_resume(ndev->phydev);