]> git.karo-electronics.de Git - linux-beck.git/commitdiff
dasd: fix list_del corruption during format
authorStefan Haberland <stefan.haberland@de.ibm.com>
Fri, 18 Jul 2014 12:24:20 +0000 (14:24 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 22 Jul 2014 07:26:23 +0000 (09:26 +0200)
If I/O errors occur during format a kernel panic with a list_del
corruption may occur.

Stop error recovery procedure after an erp action was taken.

Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/block/dasd.c

index 9242d7cff9b51ac0055e7b0398356d2dff5d330a..925b056dc2b3898fe49daf30dd09cc436f1b7623 100644 (file)
@@ -2307,8 +2307,12 @@ retry:
 
        rc = 0;
        list_for_each_entry_safe(cqr, n, ccw_queue, blocklist) {
-               if (__dasd_sleep_on_erp(cqr))
+               if (__dasd_sleep_on_erp(cqr)) {
+                       if (!cqr->status == DASD_CQR_TERMINATED &&
+                           !cqr->status == DASD_CQR_NEED_ERP)
+                               break;
                        rc = 1;
+               }
        }
        if (rc)
                goto retry;