aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorCornelia Huck <cornelia.huck@de.ibm.com>2008-09-09 12:38:58 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2008-09-09 12:39:07 +0200
commitc91ebe496120e05301465fff31094bfecf798e9f (patch)
tree684d5fe1b335ea669256fb6a3c2ee2efc5c996d1 /drivers
parent[S390] cio: Correct cleanup on error. (diff)
downloadlinux-dev-c91ebe496120e05301465fff31094bfecf798e9f.tar.xz
linux-dev-c91ebe496120e05301465fff31094bfecf798e9f.zip
[S390] cio: handle ssch() return codes correctly.
ssch() has two classes of return codes: - condition codes (0-3) which need to be translated to Linux error codes - Linux error codes (-EIO on exceptions) which should be passed to the caller (instead of erronously being handled like condition code 3) Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/s390/cio/cio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index 33bff8fec7d1..5954b905e3ca 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -208,8 +208,10 @@ cio_start_key (struct subchannel *sch, /* subchannel structure */
case 1: /* status pending */
case 2: /* busy */
return -EBUSY;
- default: /* device/path not operational */
+ case 3: /* device/path not operational */
return cio_start_handle_notoper(sch, lpm);
+ default:
+ return ccode;
}
}