]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.arch/s390-11-08-qdio_free_shutdown.patch
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-11-08-qdio_free_shutdown.patch
diff --git a/src/patches/suse-2.6.27.31/patches.arch/s390-11-08-qdio_free_shutdown.patch b/src/patches/suse-2.6.27.31/patches.arch/s390-11-08-qdio_free_shutdown.patch
new file mode 100644 (file)
index 0000000..61888b6
--- /dev/null
@@ -0,0 +1,42 @@
+From: Gerald Schaefer <geraldsc@de.ibm.com>
+Subject: qdio: call qdio_free also if qdio_shutdown fails
+References: bnc#484767,LTC#52207
+
+Symptom:     Warning message after qeth recovery.
+Problem:     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.
+Solution:    Always call qdio_free in qdio_cleanup.
+
+Acked-by: John Jolly <jjolly@suse.de>
+---
+ drivers/s390/cio/qdio_main.c |    9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+Index: linux-sles11/drivers/s390/cio/qdio_main.c
+===================================================================
+--- linux-sles11.orig/drivers/s390/cio/qdio_main.c
++++ linux-sles11/drivers/s390/cio/qdio_main.c
+@@ -1055,8 +1055,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)
+ {
+@@ -1067,8 +1068,8 @@ int qdio_cleanup(struct ccw_device *cdev
+               return -ENODEV;
+       rc = qdio_shutdown(cdev, how);
+-      if (rc == 0)
+-              rc = qdio_free(cdev);
++
++      qdio_free(cdev);
+       return rc;
+ }
+ EXPORT_SYMBOL_GPL(qdio_cleanup);