aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/NCR5380.c3
-rw-r--r--drivers/scsi/arcmsr/arcmsr_hba.c4
-rw-r--r--drivers/scsi/ipr.c2
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c6
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_scsih.c1
-rw-r--r--drivers/scsi/pmcraid.c2
6 files changed, 7 insertions, 11 deletions
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 9a5629f94f95..e7cd2fcbe036 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -936,8 +936,7 @@ static void NCR5380_exit(struct Scsi_Host *instance)
936{ 936{
937 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; 937 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
938 938
939 cancel_delayed_work(&hostdata->coroutine); 939 cancel_delayed_work_sync(&hostdata->coroutine);
940 flush_scheduled_work();
941} 940}
942 941
943/** 942/**
diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
index 1cadcd6b7da6..d6d17a1a41df 100644
--- a/drivers/scsi/arcmsr/arcmsr_hba.c
+++ b/drivers/scsi/arcmsr/arcmsr_hba.c
@@ -1022,7 +1022,7 @@ static void arcmsr_remove(struct pci_dev *pdev)
1022 int poll_count = 0; 1022 int poll_count = 0;
1023 arcmsr_free_sysfs_attr(acb); 1023 arcmsr_free_sysfs_attr(acb);
1024 scsi_remove_host(host); 1024 scsi_remove_host(host);
1025 flush_scheduled_work(); 1025 flush_work_sync(&acb->arcmsr_do_message_isr_bh);
1026 del_timer_sync(&acb->eternal_timer); 1026 del_timer_sync(&acb->eternal_timer);
1027 arcmsr_disable_outbound_ints(acb); 1027 arcmsr_disable_outbound_ints(acb);
1028 arcmsr_stop_adapter_bgrb(acb); 1028 arcmsr_stop_adapter_bgrb(acb);
@@ -1068,7 +1068,7 @@ static void arcmsr_shutdown(struct pci_dev *pdev)
1068 (struct AdapterControlBlock *)host->hostdata; 1068 (struct AdapterControlBlock *)host->hostdata;
1069 del_timer_sync(&acb->eternal_timer); 1069 del_timer_sync(&acb->eternal_timer);
1070 arcmsr_disable_outbound_ints(acb); 1070 arcmsr_disable_outbound_ints(acb);
1071 flush_scheduled_work(); 1071 flush_work_sync(&acb->arcmsr_do_message_isr_bh);
1072 arcmsr_stop_adapter_bgrb(acb); 1072 arcmsr_stop_adapter_bgrb(acb);
1073 arcmsr_flush_adapter_cache(acb); 1073 arcmsr_flush_adapter_cache(acb);
1074} 1074}
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 9c5c8be72231..a8e24f06b8d8 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -8865,7 +8865,7 @@ static void __ipr_remove(struct pci_dev *pdev)
8865 8865
8866 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); 8866 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
8867 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); 8867 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
8868 flush_scheduled_work(); 8868 flush_work_sync(&ioa_cfg->work_q);
8869 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); 8869 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
8870 8870
8871 spin_lock(&ipr_driver_lock); 8871 spin_lock(&ipr_driver_lock);
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 5d6d07bd1cd0..e7c9b41def7b 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -4242,9 +4242,8 @@ megasas_suspend(struct pci_dev *pdev, pm_message_t state)
4242 /* cancel the delayed work if this work still in queue */ 4242 /* cancel the delayed work if this work still in queue */
4243 if (instance->ev != NULL) { 4243 if (instance->ev != NULL) {
4244 struct megasas_aen_event *ev = instance->ev; 4244 struct megasas_aen_event *ev = instance->ev;
4245 cancel_delayed_work( 4245 cancel_delayed_work_sync(
4246 (struct delayed_work *)&ev->hotplug_work); 4246 (struct delayed_work *)&ev->hotplug_work);
4247 flush_scheduled_work();
4248 instance->ev = NULL; 4247 instance->ev = NULL;
4249 } 4248 }
4250 4249
@@ -4417,9 +4416,8 @@ static void __devexit megasas_detach_one(struct pci_dev *pdev)
4417 /* cancel the delayed work if this work still in queue*/ 4416 /* cancel the delayed work if this work still in queue*/
4418 if (instance->ev != NULL) { 4417 if (instance->ev != NULL) {
4419 struct megasas_aen_event *ev = instance->ev; 4418 struct megasas_aen_event *ev = instance->ev;
4420 cancel_delayed_work( 4419 cancel_delayed_work_sync(
4421 (struct delayed_work *)&ev->hotplug_work); 4420 (struct delayed_work *)&ev->hotplug_work);
4422 flush_scheduled_work();
4423 instance->ev = NULL; 4421 instance->ev = NULL;
4424 } 4422 }
4425 4423
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index eda347c57979..b375150a379b 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -6935,7 +6935,6 @@ _scsih_suspend(struct pci_dev *pdev, pm_message_t state)
6935 u32 device_state; 6935 u32 device_state;
6936 6936
6937 mpt2sas_base_stop_watchdog(ioc); 6937 mpt2sas_base_stop_watchdog(ioc);
6938 flush_scheduled_work();
6939 scsi_block_requests(shost); 6938 scsi_block_requests(shost);
6940 device_state = pci_choose_state(pdev, state); 6939 device_state = pci_choose_state(pdev, state);
6941 printk(MPT2SAS_INFO_FMT "pdev=0x%p, slot=%s, entering " 6940 printk(MPT2SAS_INFO_FMT "pdev=0x%p, slot=%s, entering "
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index 321cf3ae8630..bcf858e88c64 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -5454,7 +5454,7 @@ static void __devexit pmcraid_remove(struct pci_dev *pdev)
5454 pmcraid_shutdown(pdev); 5454 pmcraid_shutdown(pdev);
5455 5455
5456 pmcraid_disable_interrupts(pinstance, ~0); 5456 pmcraid_disable_interrupts(pinstance, ~0);
5457 flush_scheduled_work(); 5457 flush_work_sync(&pinstance->worker_q);
5458 5458
5459 pmcraid_kill_tasklets(pinstance); 5459 pmcraid_kill_tasklets(pinstance);
5460 pmcraid_unregister_interrupt_handler(pinstance); 5460 pmcraid_unregister_interrupt_handler(pinstance);