[S390] qdio: fix init sequence
Sebastian Ott [Mon, 4 Apr 2011 07:43:31 +0000 (09:43 +0200)]
Reorder the initialization sequence of the qdio module to avoid
writing to an uninitialized debug feature entry. Also reorder
the exit function to restore a consistent cleanup path.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

drivers/s390/cio/qdio_main.c

index 479c665..c532ba9 100644 (file)
@@ -1649,26 +1649,26 @@ static int __init init_QDIO(void)
 {
        int rc;
 
-       rc = qdio_setup_init();
+       rc = qdio_debug_init();
        if (rc)
                return rc;
+       rc = qdio_setup_init();
+       if (rc)
+               goto out_debug;
        rc = tiqdio_allocate_memory();
        if (rc)
                goto out_cache;
-       rc = qdio_debug_init();
-       if (rc)
-               goto out_ti;
        rc = tiqdio_register_thinints();
        if (rc)
-               goto out_debug;
+               goto out_ti;
        return 0;
 
-out_debug:
-       qdio_debug_exit();
 out_ti:
        tiqdio_free_memory();
 out_cache:
        qdio_setup_exit();
+out_debug:
+       qdio_debug_exit();
        return rc;
 }
 
@@ -1676,8 +1676,8 @@ static void __exit exit_QDIO(void)
 {
        tiqdio_unregister_thinints();
        tiqdio_free_memory();
-       qdio_debug_exit();
        qdio_setup_exit();
+       qdio_debug_exit();
 }
 
 module_init(init_QDIO);