PCI/AER: Flush workqueue on device remove to avoid use-after-free
[pandora-kernel.git] / drivers / pci / pcie / aer / aerdrv_core.c
index 9674e9f..21addfa 100644 (file)
@@ -637,6 +637,7 @@ static void aer_recover_work_func(struct work_struct *work)
                        continue;
                }
                do_recovery(pdev, entry.severity);
+               pci_dev_put(pdev);
        }
 }
 #endif
@@ -822,8 +823,6 @@ void aer_isr(struct work_struct *work)
        while (get_e_source(rpc, &e_src))
                aer_isr_one_error(p_device, &e_src);
        mutex_unlock(&rpc->rpc_mutex);
-
-       wake_up(&rpc->wait_release);
 }
 
 /**