| From foo@baz Wed Feb 28 16:16:23 CET 2018 |
| From: Stefan Haberland <sth@linux.vnet.ibm.com> |
| Date: Wed, 6 Dec 2017 10:30:39 +0100 |
| Subject: s390/dasd: fix wrongly assigned configuration data |
| |
| From: Stefan Haberland <sth@linux.vnet.ibm.com> |
| |
| |
| [ Upstream commit 8a9bd4f8ebc6800bfc0596e28631ff6809a2f615 ] |
| |
| We store per path and per device configuration data to identify the |
| path or device correctly. The per path configuration data might get |
| mixed up if the original request gets into error recovery and is |
| started with a random path mask. |
| |
| This would lead to a wrong identification of a path in case of a CUIR |
| event for example. |
| |
| Fix by copying the path mask from the original request to the error |
| recovery request in case it is a path verification request. |
| |
| Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com> |
| Reviewed-by: Jan Hoeppner <hoeppner@linux.vnet.ibm.com> |
| Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/s390/block/dasd_3990_erp.c | 10 ++++++++++ |
| 1 file changed, 10 insertions(+) |
| |
| --- a/drivers/s390/block/dasd_3990_erp.c |
| +++ b/drivers/s390/block/dasd_3990_erp.c |
| @@ -2743,6 +2743,16 @@ dasd_3990_erp_action(struct dasd_ccw_req |
| erp = dasd_3990_erp_handle_match_erp(cqr, erp); |
| } |
| |
| + |
| + /* |
| + * For path verification work we need to stick with the path that was |
| + * originally chosen so that the per path configuration data is |
| + * assigned correctly. |
| + */ |
| + if (test_bit(DASD_CQR_VERIFY_PATH, &erp->flags) && cqr->lpm) { |
| + erp->lpm = cqr->lpm; |
| + } |
| + |
| if (device->features & DASD_FEATURE_ERPLOG) { |
| /* print current erp_chain */ |
| dev_err(&device->cdev->dev, |