Skip to content

Commit

Permalink
ravb: fix invalid context bug while calling auto-negotiation by ethtool
Browse files Browse the repository at this point in the history
Since commit 35b5f6b ("PHYLIB: Locking fixes for PHY I/O
potentially sleeping") phy_start_aneg() function utilizes a mutex
to serialize changes to phy state, however the helper function is
called in atomic context.

The bug can be reproduced by running "ethtool -r" command, the bug
is reported if CONFIG_DEBUG_ATOMIC_SLEEP build option is enabled.

Fixes: c156633 ("Renesas Ethernet AVB driver proper")
Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Reviewed-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vladimir Zapolskiy authored and davem330 committed Jul 7, 2018
1 parent 6783f50 commit 0973a4d
Showing 1 changed file with 1 addition and 6 deletions.
7 changes: 1 addition & 6 deletions drivers/net/ethernet/renesas/ravb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1152,15 +1152,10 @@ static int ravb_set_link_ksettings(struct net_device *ndev,

static int ravb_nway_reset(struct net_device *ndev)
{
struct ravb_private *priv = netdev_priv(ndev);
int error = -ENODEV;
unsigned long flags;

if (ndev->phydev) {
spin_lock_irqsave(&priv->lock, flags);
if (ndev->phydev)
error = phy_start_aneg(ndev->phydev);
spin_unlock_irqrestore(&priv->lock, flags);
}

return error;
}
Expand Down

0 comments on commit 0973a4d

Please sign in to comment.