]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.arch/s390-11-08-qdio_free_shutdown.patch
Merge branch 'master' of git://git.ipfire.org/ipfire-2.x
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-11-08-qdio_free_shutdown.patch
1 From: Gerald Schaefer <geraldsc@de.ibm.com>
2 Subject: qdio: call qdio_free also if qdio_shutdown fails
3 References: bnc#484767,LTC#52207
4
5 Symptom: Warning message after qeth recovery.
6 Problem: qdio_cleanup is a wrapper function that should call qdio_shutdown
7 and qdio_free. qdio_free was not called if an error occured in
8 qdio_shutdown resulting in a missing free of allocated resources.
9 Solution: Always call qdio_free in qdio_cleanup.
10
11 Acked-by: John Jolly <jjolly@suse.de>
12 ---
13 drivers/s390/cio/qdio_main.c | 9 +++++----
14 1 file changed, 5 insertions(+), 4 deletions(-)
15
16 Index: linux-sles11/drivers/s390/cio/qdio_main.c
17 ===================================================================
18 --- linux-sles11.orig/drivers/s390/cio/qdio_main.c
19 +++ linux-sles11/drivers/s390/cio/qdio_main.c
20 @@ -1055,8 +1055,9 @@ EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc);
21 * @cdev: associated ccw device
22 * @how: use halt or clear to shutdown
23 *
24 - * This function calls qdio_shutdown() for @cdev with method @how
25 - * and on success qdio_free() for @cdev.
26 + * This function calls qdio_shutdown() for @cdev with method @how.
27 + * and qdio_free(). The qdio_free() return value is ignored since
28 + * !irq_ptr is already checked.
29 */
30 int qdio_cleanup(struct ccw_device *cdev, int how)
31 {
32 @@ -1067,8 +1068,8 @@ int qdio_cleanup(struct ccw_device *cdev
33 return -ENODEV;
34
35 rc = qdio_shutdown(cdev, how);
36 - if (rc == 0)
37 - rc = qdio_free(cdev);
38 +
39 + qdio_free(cdev);
40 return rc;
41 }
42 EXPORT_SYMBOL_GPL(qdio_cleanup);