[S390] qdio: tasklet termination in case of module unload
authorJan Glauber <jang@linux.vnet.ibm.com>
Thu, 26 Mar 2009 14:24:30 +0000 (15:24 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 26 Mar 2009 14:24:21 +0000 (15:24 +0100)
If the qdio module is unloaded the tiqdio tasklet must be terminated
by tasklet_kill. Move the tasklet_kill after the unregistration of
the adapter interrupt so the tiqdio tasklet will not be scheduled
anymore before calling tasklet_kill.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/qdio_thinint.c

index c7c5512a892ef15e08c9c9dad952c0af1d43073e..96f0095f568d1a353f2a038459088d4d4050adef 100644 (file)
@@ -370,10 +370,11 @@ void qdio_shutdown_thinint(struct qdio_irq *irq_ptr)
 
 void __exit tiqdio_unregister_thinints(void)
 {
-       tasklet_disable(&tiqdio_tasklet);
+       WARN_ON(!list_empty(&tiq_list));
 
        if (tiqdio_alsi) {
                s390_unregister_adapter_interrupt(tiqdio_alsi, QDIO_AIRQ_ISC);
                isc_unregister(QDIO_AIRQ_ISC);
        }
+       tasklet_kill(&tiqdio_tasklet);
 }