aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/char/tape_std.c
diff options
context:
space:
mode:
authorMichael Holzheu <holzheu@de.ibm.com>2007-03-05 23:35:47 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-03-05 23:35:47 +0100
commit4925c7e22293dbf2b85351e8c2323ad8282396b3 (patch)
treefa89ef269630ce6e5cb928ce7e681f2bd55d327b /drivers/s390/char/tape_std.c
parent[S390] nss: disable kexec. (diff)
downloadlinux-dev-4925c7e22293dbf2b85351e8c2323ad8282396b3.tar.xz
linux-dev-4925c7e22293dbf2b85351e8c2323ad8282396b3.zip
[S390] tape: Compression overwrites crypto setting
After switching compression on/off with the mt command, tape encryption is no longer working. The reason for that is, that the modeset_byte is set to the compression value instead of using bitwise and/or bit operations to enable/disable the corresponding bit. Signed-off-by: Michael Holzheu <holzheu@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/char/tape_std.c')
-rw-r--r--drivers/s390/char/tape_std.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/s390/char/tape_std.c b/drivers/s390/char/tape_std.c
index 7a76ec413a3a..2a1af4e60be0 100644
--- a/drivers/s390/char/tape_std.c
+++ b/drivers/s390/char/tape_std.c
@@ -647,7 +647,10 @@ tape_std_mtcompression(struct tape_device *device, int mt_count)
return PTR_ERR(request);
request->op = TO_NOP;
/* setup ccws */
- *device->modeset_byte = (mt_count == 0) ? 0x00 : 0x08;
+ if (mt_count == 0)
+ *device->modeset_byte &= ~0x08;
+ else
+ *device->modeset_byte |= 0x08;
tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, device->modeset_byte);
tape_ccw_end(request->cpaddr + 1, NOP, 0, NULL);
/* execute it */