• Thomas Tai's avatar
    PCI/AER: Work around use-after-free in pcie_do_fatal_recovery() · bd91b56c
    Thomas Tai authored
    When an fatal error is received by a non-bridge device, the device is
    removed, and pci_stop_and_remove_bus_device() deallocates the device
    structure.  The freed device structure is used by subsequent code to send
    uevents and print messages.
    
    Hold a reference on the device until we're finished using it.  This is not
    an ideal fix because pcie_do_fatal_recovery() should not use the device at
    all after removing it, but that's too big a project for right now.
    
    Fixes: 7e9084b3 ("PCI/AER: Handle ERR_FATAL with removal and re-enumeration of devices")
    Signed-off-by: default avatarThomas Tai <thomas.tai@oracle.com>
    [bhelgaas: changelog, reduce get/put coverage]
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    bd91b56c
err.c 10.5 KB