diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index cec1b1746ae0f235ced302ad64b7e42076e732fe..756d4b4f0a9fda55053b732bc4562545514fd843 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -8199,6 +8199,11 @@ static pci_ers_result_t bnx2_io_error_detected(struct pci_dev *pdev,
 	rtnl_lock();
 	netif_device_detach(dev);
 
+	if (state == pci_channel_io_perm_failure) {
+		rtnl_unlock();
+		return PCI_ERS_RESULT_DISCONNECT;
+	}
+
 	if (netif_running(dev)) {
 		bnx2_netif_stop(bp);
 		del_timer_sync(&bp->timer);