]>
Commit | Line | Data |
---|---|---|
00e5a55c BS |
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); |