|
@@ -2309,7 +2309,7 @@ static struct dasd_ccw_req *dasd_3990_erp_add_erp(struct dasd_ccw_req *cqr)
|
|
|
cqr->retries);
|
|
|
dasd_block_set_timer(device->block, (HZ << 3));
|
|
|
}
|
|
|
- return cqr;
|
|
|
+ return erp;
|
|
|
}
|
|
|
|
|
|
ccw = cqr->cpaddr;
|
|
@@ -2372,6 +2372,9 @@ dasd_3990_erp_additional_erp(struct dasd_ccw_req * cqr)
|
|
|
/* add erp and initialize with default TIC */
|
|
|
erp = dasd_3990_erp_add_erp(cqr);
|
|
|
|
|
|
+ if (IS_ERR(erp))
|
|
|
+ return erp;
|
|
|
+
|
|
|
/* inspect sense, determine specific ERP if possible */
|
|
|
if (erp != cqr) {
|
|
|
|
|
@@ -2711,6 +2714,8 @@ dasd_3990_erp_action(struct dasd_ccw_req * cqr)
|
|
|
if (erp == NULL) {
|
|
|
/* no matching erp found - set up erp */
|
|
|
erp = dasd_3990_erp_additional_erp(cqr);
|
|
|
+ if (IS_ERR(erp))
|
|
|
+ return erp;
|
|
|
} else {
|
|
|
/* matching erp found - set all leading erp's to DONE */
|
|
|
erp = dasd_3990_erp_handle_match_erp(cqr, erp);
|