Petr Tesarik 312c0d
From: Juergen Christ <jchrist@linux.ibm.com>
Petr Tesarik 312c0d
Date: Mon, 22 Nov 2021 14:01:34 +0100
Petr Tesarik 312c0d
Subject: s390/zcrypt: CCA control CPRB sending
Petr Tesarik 312c0d
Git-commit: cff2d3abc8da078a0447d785736204d8a0ad49b0
Petr Tesarik 312c0d
Patch-mainline: v5.17-rc1
Petr Tesarik 312c0d
References: jsc#PED-610
Petr Tesarik 312c0d
Petr Tesarik 312c0d
When sending a CCA CPRB to a control domain, the CPRB has to be sent via a
Petr Tesarik 312c0d
usage domain.  Previous code used the default domain to route this message.
Petr Tesarik 312c0d
If the default domain is not online and ready to send the CPRB, the ioctl will
Petr Tesarik 312c0d
fail even if other usage domains could be used to send the CPRB.
Petr Tesarik 312c0d
Petr Tesarik 312c0d
To improve this, instead of using the default domain, switch to auto-select of
Petr Tesarik 312c0d
the domain.
Petr Tesarik 312c0d
Petr Tesarik 312c0d
Signed-off-by: Juergen Christ <jchrist@linux.ibm.com>
Petr Tesarik 312c0d
Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Petr Tesarik 312c0d
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Petr Tesarik 312c0d
Acked-by: Petr Tesarik <ptesarik@suse.com>
Petr Tesarik 312c0d
---
Petr Tesarik 312c0d
 drivers/s390/crypto/zcrypt_api.c |    7 +++----
Petr Tesarik 312c0d
 1 file changed, 3 insertions(+), 4 deletions(-)
Petr Tesarik 312c0d
Petr Tesarik 312c0d
--- a/drivers/s390/crypto/zcrypt_api.c
Petr Tesarik 312c0d
+++ b/drivers/s390/crypto/zcrypt_api.c
Petr Tesarik 312c0d
@@ -878,14 +878,13 @@ static long _zcrypt_send_cprb(bool users
Petr Tesarik 312c0d
 
Petr Tesarik 312c0d
 	/*
Petr Tesarik 312c0d
 	 * If a valid target domain is set and this domain is NOT a usage
Petr Tesarik 312c0d
-	 * domain but a control only domain, use the default domain as target.
Petr Tesarik 312c0d
+	 * domain but a control only domain, autoselect target domain.
Petr Tesarik 312c0d
 	 */
Petr Tesarik 312c0d
 	tdom = *domain;
Petr Tesarik 312c0d
 	if (tdom < AP_DOMAINS &&
Petr Tesarik 312c0d
 	    !ap_test_config_usage_domain(tdom) &&
Petr Tesarik 312c0d
-	    ap_test_config_ctrl_domain(tdom) &&
Petr Tesarik 312c0d
-	    ap_domain_index >= 0)
Petr Tesarik 312c0d
-		tdom = ap_domain_index;
Petr Tesarik 312c0d
+	    ap_test_config_ctrl_domain(tdom))
Petr Tesarik 312c0d
+		tdom = AUTOSEL_DOM;
Petr Tesarik 312c0d
 
Petr Tesarik 312c0d
 	pref_zc = NULL;
Petr Tesarik 312c0d
 	pref_zq = NULL;