[S390] qdio: call qdio_free also if qdio_shutdown fails
authorJan Glauber <jang@linux.vnet.ibm.com>
Thu, 26 Mar 2009 14:24:27 +0000 (15:24 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 26 Mar 2009 14:24:20 +0000 (15:24 +0100)
qdio_cleanup is a wrapper function that should call qdio_shutdown and
qdio_free. qdio_free was not called if an error occured in qdio_shutdown
resulting in a missing free of allocated resources.

Call qdio_free regardless of the return value of qdio_shutdown.

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

index 1974ec7bf0ed5a5ecdf0a67b850d661cc96559bb..8e6bc9cddfa02d514bca838ea34bf8d0f7ce7d19 100644 (file)
@@ -1073,8 +1073,9 @@ EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc);
  * @cdev: associated ccw device
  * @how: use halt or clear to shutdown
  *
- * This function calls qdio_shutdown() for @cdev with method @how
- * and on success qdio_free() for @cdev.
+ * This function calls qdio_shutdown() for @cdev with method @how.
+ * and qdio_free(). The qdio_free() return value is ignored since
+ * !irq_ptr is already checked.
  */
 int qdio_cleanup(struct ccw_device *cdev, int how)
 {
@@ -1085,8 +1086,8 @@ int qdio_cleanup(struct ccw_device *cdev, int how)
                return -ENODEV;
 
        rc = qdio_shutdown(cdev, how);
-       if (rc == 0)
-               rc = qdio_free(cdev);
+
+       qdio_free(cdev);
        return rc;
 }
 EXPORT_SYMBOL_GPL(qdio_cleanup);