|
@@ -2704,6 +2704,7 @@ static int acpi_nfit_flush_probe(struct nvdimm_bus_descriptor *nd_desc)
|
|
|
struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);
|
|
|
struct device *dev = acpi_desc->dev;
|
|
|
struct acpi_nfit_flush_work flush;
|
|
|
+ int rc;
|
|
|
|
|
|
/* bounce the device lock to flush acpi_nfit_add / acpi_nfit_notify */
|
|
|
device_lock(dev);
|
|
@@ -2716,7 +2717,10 @@ static int acpi_nfit_flush_probe(struct nvdimm_bus_descriptor *nd_desc)
|
|
|
INIT_WORK_ONSTACK(&flush.work, flush_probe);
|
|
|
COMPLETION_INITIALIZER_ONSTACK(flush.cmp);
|
|
|
queue_work(nfit_wq, &flush.work);
|
|
|
- return wait_for_completion_interruptible(&flush.cmp);
|
|
|
+
|
|
|
+ rc = wait_for_completion_interruptible(&flush.cmp);
|
|
|
+ cancel_work_sync(&flush.work);
|
|
|
+ return rc;
|
|
|
}
|
|
|
|
|
|
static int acpi_nfit_clear_to_send(struct nvdimm_bus_descriptor *nd_desc,
|