zcrypt: Do not remove coprocessor for error 8/72
authorFelix Beck <felix.beck@de.ibm.com>
Wed, 27 Jan 2010 09:12:39 +0000 (10:12 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 9 Feb 2010 12:50:44 +0000 (04:50 -0800)
commit 19b123ebacacdce5e75045bfe82122b01c821a5b upstream.

In a case where the number of the input data is bigger than the
modulus of the key, the coprocessor adapters will report an 8/72
error. This case is not caught yet, thus the adapter will be taken
offline. To prevent this, we return an -EINVAL instead.

Signed-off-by: Felix Beck <felix.beck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/s390/crypto/zcrypt_pcicc.c
drivers/s390/crypto/zcrypt_pcixcc.c

index f4b0c47954341d4fcc5d88af1119d4064580db92..7f1e3ba4bb64cbb25bb02909b3b00ef4aad5c364 100644 (file)
@@ -373,6 +373,8 @@ static int convert_type86(struct zcrypt_device *zdev,
                        zdev->max_mod_size = PCICC_MAX_MOD_SIZE_OLD;
                        return -EAGAIN;
                }
+               if (service_rc == 8 && service_rs == 72)
+                       return -EINVAL;
                zdev->online = 0;
                return -EAGAIN; /* repeat the request on a different device. */
        }
index 5677b40e4ac019ba1e8034db6ba526aaeb92f02e..1f9e92387208f07ccc9a1440ddf1a76c2be53c02 100644 (file)
@@ -462,6 +462,8 @@ static int convert_type86_ica(struct zcrypt_device *zdev,
                }
                if (service_rc == 12 && service_rs == 769)
                        return -EINVAL;
+               if (service_rc == 8 && service_rs == 72)
+                       return -EINVAL;
                zdev->online = 0;
                return -EAGAIN; /* repeat the request on a different device. */
        }