lkml.org 
[lkml]   [2020]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 16/78] tg3: driver sleeps indefinitely when EEH errors exceed eeh_max_freezes
    Date
    From: David Christensen <drc@linux.vnet.ibm.com>

    [ Upstream commit 3a2656a211caf35e56afc9425e6e518fa52f7fbc ]

    The driver function tg3_io_error_detected() calls napi_disable twice,
    without an intervening napi_enable, when the number of EEH errors exceeds
    eeh_max_freezes, resulting in an indefinite sleep while holding rtnl_lock.

    Add check for pcierr_recovery which skips code already executed for the
    "Frozen" state.

    Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/broadcom/tg3.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
    index bc0221eafe5c4..e40d31b405253 100644
    --- a/drivers/net/ethernet/broadcom/tg3.c
    +++ b/drivers/net/ethernet/broadcom/tg3.c
    @@ -18179,8 +18179,8 @@ static pci_ers_result_t tg3_io_error_detected(struct pci_dev *pdev,

    rtnl_lock();

    - /* We probably don't have netdev yet */
    - if (!netdev || !netif_running(netdev))
    + /* Could be second call or maybe we don't have netdev yet */
    + if (!netdev || tp->pcierr_recovery || !netif_running(netdev))
    goto done;

    /* We needn't recover from permanent error */
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-29 22:17    [W:4.133 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site