summaryrefslogtreecommitdiff
path: root/arch/s390/crypto/crypt_s390.h
diff options
context:
space:
mode:
authorJan Glauber <jang@linux.vnet.ibm.com>2011-11-14 14:19:07 +0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2011-11-14 14:19:09 +0400
commit6ed54387dc470fc439cb154724a1ac81d251c126 (patch)
tree52c5c3bb66f38eae5cba19109cd5657d9526f4ea /arch/s390/crypto/crypt_s390.h
parentcfa1e7e1d49c6f5f0b00b2cb890b521e5c0dc7ea (diff)
downloadlinux-6ed54387dc470fc439cb154724a1ac81d251c126.tar.xz
[S390] crypto: avoid MSA3 and MSA4 instructions in ESA mode
MSA3 and MSA4 instructions are only available under CONFIG_64BIT. Bail out before using any of these instructions if the kernel is running in 31 bit mode. Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/crypto/crypt_s390.h')
-rw-r--r--arch/s390/crypto/crypt_s390.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/s390/crypto/crypt_s390.h b/arch/s390/crypto/crypt_s390.h
index 49676771bd66..ffd1ac255f19 100644
--- a/arch/s390/crypto/crypt_s390.h
+++ b/arch/s390/crypto/crypt_s390.h
@@ -368,9 +368,12 @@ static inline int crypt_s390_func_available(int func,
if (facility_mask & CRYPT_S390_MSA && !test_facility(17))
return 0;
- if (facility_mask & CRYPT_S390_MSA3 && !test_facility(76))
+
+ if (facility_mask & CRYPT_S390_MSA3 &&
+ (!test_facility(2) || !test_facility(76)))
return 0;
- if (facility_mask & CRYPT_S390_MSA4 && !test_facility(77))
+ if (facility_mask & CRYPT_S390_MSA4 &&
+ (!test_facility(2) || !test_facility(77)))
return 0;
switch (func & CRYPT_S390_OP_MASK) {