• Jon Hunter's avatar
    net: stmmac: Fix crash observed if PHY does not support EEE · 177d935a
    Jon Hunter authored
    If the PHY does not support EEE mode, then a crash is observed when the
    ethernet interface is enabled. The crash occurs, because if the PHY does
    not support EEE, then although the EEE timer is never configured, it is
    still marked as enabled and so the stmmac ethernet driver is still
    trying to update the timer by calling mod_timer(). This triggers a BUG()
    in the mod_timer() because we are trying to update a timer when there is
    no callback function set because timer_setup() was never called for this
    timer.
    
    The problem is caused because we return true from the function
    stmmac_eee_init(), marking the EEE timer as enabled, even when we have
    not configured the EEE timer. Fix this by ensuring that we return false
    if the PHY does not support EEE and hence, 'eee_active' is not set.
    
    Fixes: 74371272 ("net: stmmac: Convert to phylink and remove phylib logic")
    Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Tested-by: default avatarThierry Reding <treding@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    177d935a
stmmac_main.c 125 KB