void ib_sa_cleanup(void)
 {
        cancel_delayed_work(&ib_nl_timed_work);
-       flush_workqueue(ib_nl_wq);
        destroy_workqueue(ib_nl_wq);
        mcast_cleanup();
        ib_unregister_client(&sa_client);
 
 void c4iw_cm_term(void)
 {
        WARN_ON(!list_empty(&timeout_list));
-       flush_workqueue(workq);
        destroy_workqueue(workq);
 }
 
                kfree(ctx);
        }
        mutex_unlock(&dev_mutex);
-       flush_workqueue(reg_workq);
        destroy_workqueue(reg_workq);
        cxgb4_unregister_uld(CXGB4_ULD_RDMA);
        c4iw_cm_term();
 
                }
                spin_unlock_irqrestore(&sriov->alias_guid.ag_work_lock, flags);
        }
-       for (i = 0 ; i < dev->num_ports; i++) {
-               flush_workqueue(dev->sriov.alias_guid.ports_guid[i].wq);
+       for (i = 0 ; i < dev->num_ports; i++)
                destroy_workqueue(dev->sriov.alias_guid.ports_guid[i].wq);
-       }
        ib_sa_unregister_client(dev->sriov.alias_guid.sa_client);
        kfree(dev->sriov.alias_guid.sa_client);
 }
 
 
 void siw_cm_exit(void)
 {
-       if (siw_cm_wq) {
-               flush_workqueue(siw_cm_wq);
+       if (siw_cm_wq)
                destroy_workqueue(siw_cm_wq);
-       }
 }
 
        if (priv->wq) {
                /* See ipoib_mcast_carrier_on_task() */
                WARN_ON(test_bit(IPOIB_FLAG_OPER_UP, &priv->flags));
-               flush_workqueue(priv->wq);
                destroy_workqueue(priv->wq);
                priv->wq = NULL;
        }