PCI / PCIe portdrv: Fix pcie_portdrv_slot_reset()
authorRafael J. Wysocki <rjw@sisk.pl>
Mon, 14 Sep 2009 20:25:11 +0000 (22:25 +0200)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Mon, 14 Sep 2009 20:38:55 +0000 (13:38 -0700)
After commit c82f63e411f1b58427c103bd95af2863b1c96dd1
(PCI: check saved state before restore) pcie_portdrv_slot_reset()
may not work correctly if dev->error_state is equal to
pci_channel_io_frozen, because dev->state_saved need not be set at
that time.  Fix this issue by setting dev->state_saved before
pci_restore_state() is called in pcie_portdrv_slot_reset().

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/pcie/portdrv_pci.c

index 091ce70051e040981ae3731e2b58bec76fcd2281..6df5c984a79118ae96969369dd75d77781ba0dca 100644 (file)
@@ -205,6 +205,7 @@ static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
 
        /* If fatal, restore cfg space for possible link reset at upstream */
        if (dev->error_state == pci_channel_io_frozen) {
+               dev->state_saved = true;
                pci_restore_state(dev);
                pcie_portdrv_restore_config(dev);
                pci_enable_pcie_error_reporting(dev);