[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: Ralph Wuerthner <rwuerthn@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
39aa7cf612
commit
2af48080e1
|
@ -432,14 +432,17 @@ static int convert_type86_ica(struct zcrypt_device *zdev,
|
||||||
}
|
}
|
||||||
if (service_rc == 8 && service_rs == 770) {
|
if (service_rc == 8 && service_rs == 770) {
|
||||||
PDEBUG("Invalid key length on PCIXCC/CEX2C\n");
|
PDEBUG("Invalid key length on PCIXCC/CEX2C\n");
|
||||||
zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD;
|
return -EINVAL;
|
||||||
return -EAGAIN;
|
|
||||||
}
|
}
|
||||||
if (service_rc == 8 && service_rs == 783) {
|
if (service_rc == 8 && service_rs == 783) {
|
||||||
PDEBUG("Extended bitlengths not enabled on PCIXCC/CEX2C\n");
|
PDEBUG("Extended bitlengths not enabled on PCIXCC/CEX2C\n");
|
||||||
zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD;
|
zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD;
|
||||||
return -EAGAIN;
|
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",
|
PRINTK("Unknown service rc/rs (PCIXCC/CEX2C): %d/%d\n",
|
||||||
service_rc, service_rs);
|
service_rc, service_rs);
|
||||||
zdev->online = 0;
|
zdev->online = 0;
|
||||||
|
|
Reference in New Issue