s390/qeth: return proper errno on IO error
authorJulian Wiedmann <jwi@linux.ibm.com>
Wed, 20 Nov 2019 13:20:57 +0000 (14:20 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Nov 2019 20:29:47 +0000 (12:29 -0800)
When propagating IO errors back to userspace, one error path in
qeth_irq() currently returns '1' instead of a proper errno.

Fixes: 54daaca7024d ("s390/qeth: cancel cmd on early error")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_core_main.c

index dda274351c21917018b009e38101a79c132de68d..83794d7494d48af6f174096507e8578cbf49091e 100644 (file)
@@ -901,30 +901,30 @@ static int qeth_get_problem(struct qeth_card *card, struct ccw_device *cdev,
                                 CCW_DEVID(cdev), dstat, cstat);
                print_hex_dump(KERN_WARNING, "qeth: irb ", DUMP_PREFIX_OFFSET,
                                16, 1, irb, 64, 1);
-               return 1;
+               return -EIO;
        }
 
        if (dstat & DEV_STAT_UNIT_CHECK) {
                if (sense[SENSE_RESETTING_EVENT_BYTE] &
                    SENSE_RESETTING_EVENT_FLAG) {
                        QETH_CARD_TEXT(card, 2, "REVIND");
-                       return 1;
+                       return -EIO;
                }
                if (sense[SENSE_COMMAND_REJECT_BYTE] &
                    SENSE_COMMAND_REJECT_FLAG) {
                        QETH_CARD_TEXT(card, 2, "CMDREJi");
-                       return 1;
+                       return -EIO;
                }
                if ((sense[2] == 0xaf) && (sense[3] == 0xfe)) {
                        QETH_CARD_TEXT(card, 2, "AFFE");
-                       return 1;
+                       return -EIO;
                }
                if ((!sense[0]) && (!sense[1]) && (!sense[2]) && (!sense[3])) {
                        QETH_CARD_TEXT(card, 2, "ZEROSEN");
                        return 0;
                }
                QETH_CARD_TEXT(card, 2, "DGENCHK");
-                       return 1;
+                       return -EIO;
        }
        return 0;
 }