crypto: s390 - Respect STFL bit
authorJan Glauber <jang@linux.vnet.ibm.com>
Sat, 12 Jul 2008 07:42:11 +0000 (15:42 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 12 Jul 2008 07:42:11 +0000 (15:42 +0800)
Bevore issuing any s390 crypto operation check whether the
CPACF facility is enabled in the facility list. That way a
virtualization layer can prevent usage of the CPACF facility
regardless of the availability of the crypto instructions.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/s390/crypto/crypt_s390.h

index 9992f95..0ef9829 100644 (file)
@@ -296,6 +296,10 @@ static inline int crypt_s390_func_available(int func)
        unsigned char status[16];
        int ret;
 
+       /* check if CPACF facility (bit 17) is available */
+       if (!(stfl() & 1ULL << (31 - 17)))
+               return 0;
+
        switch (func & CRYPT_S390_OP_MASK) {
        case CRYPT_S390_KM:
                ret = crypt_s390_km(KM_QUERY, &status, NULL, NULL, 0);