Commit 2af48080 authored by Ralph Wuerthner's avatar Ralph Wuerthner Committed by Martin Schwidefsky
Browse files

[S390] zcrypt: fix PCIXCC/CEX2C error recovery



Symptom:     zcrypt fails by setting all PCIXCC/CEX2C cards offline for a
             certain type of invalid keys.
Problem:     zcrypt does not handle rc=12/rs=769 request responses correctly
Solution:    modify convert_type86_ica() to handle these error codes correctly

Signed-off-by: default avatarRalph Wuerthner <rwuerthn@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 39aa7cf6
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -432,14 +432,17 @@ static int convert_type86_ica(struct zcrypt_device *zdev,
		}
		if (service_rc == 8 && service_rs == 770) {
			PDEBUG("Invalid key length on PCIXCC/CEX2C\n");
			zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD;
			return -EAGAIN;
			return -EINVAL;
		}
		if (service_rc == 8 && service_rs == 783) {
			PDEBUG("Extended bitlengths not enabled on PCIXCC/CEX2C\n");
			zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD;
			return -EAGAIN;
		}
		if (service_rc == 12 && service_rs == 769) {
			PDEBUG("Invalid key on PCIXCC/CEX2C\n");
			return -EINVAL;
		}
		PRINTK("Unknown service rc/rs (PCIXCC/CEX2C): %d/%d\n",
		       service_rc, service_rs);
		zdev->online = 0;