mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 14:33:24 -04:00
s390/zcrypt: Filter admin CPRBs on custom devices
Add a filter for custom devices to check for allowed control domains of admin CPRBs. This filter only applies to custom devices and not to the main device. Signed-off-by: Juergen Christ <jchrist@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
committed by
Vasily Gorbik
parent
895ae58da4
commit
cfd68b3309
@@ -923,11 +923,22 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
|
|||||||
if (rc)
|
if (rc)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
tdom = *domain;
|
||||||
|
if (perms != &ap_perms && tdom < AP_DOMAINS) {
|
||||||
|
if (ap_msg.flags & AP_MSG_FLAG_ADMIN) {
|
||||||
|
if (!test_bit_inv(tdom, perms->adm)) {
|
||||||
|
rc = -ENODEV;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
} else if ((ap_msg.flags & AP_MSG_FLAG_USAGE) == 0) {
|
||||||
|
rc = -EOPNOTSUPP;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* If a valid target domain is set and this domain is NOT a usage
|
* If a valid target domain is set and this domain is NOT a usage
|
||||||
* domain but a control only domain, autoselect target domain.
|
* domain but a control only domain, autoselect target domain.
|
||||||
*/
|
*/
|
||||||
tdom = *domain;
|
|
||||||
if (tdom < AP_DOMAINS &&
|
if (tdom < AP_DOMAINS &&
|
||||||
!ap_test_config_usage_domain(tdom) &&
|
!ap_test_config_usage_domain(tdom) &&
|
||||||
ap_test_config_ctrl_domain(tdom))
|
ap_test_config_ctrl_domain(tdom))
|
||||||
@@ -1105,6 +1116,18 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
|
|||||||
if (rc)
|
if (rc)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
|
||||||
|
if (perms != &ap_perms && domain < AUTOSEL_DOM) {
|
||||||
|
if (ap_msg.flags & AP_MSG_FLAG_ADMIN) {
|
||||||
|
if (!test_bit_inv(domain, perms->adm)) {
|
||||||
|
rc = -ENODEV;
|
||||||
|
goto out_free;
|
||||||
|
}
|
||||||
|
} else if ((ap_msg.flags & AP_MSG_FLAG_USAGE) == 0) {
|
||||||
|
rc = -EOPNOTSUPP;
|
||||||
|
goto out_free;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pref_zc = NULL;
|
pref_zc = NULL;
|
||||||
pref_zq = NULL;
|
pref_zq = NULL;
|
||||||
spin_lock(&zcrypt_list_lock);
|
spin_lock(&zcrypt_list_lock);
|
||||||
|
|||||||
Reference in New Issue
Block a user