kern: specify allowable ipc client memory attr via inverted-whitelist, not blacklist

This commit is contained in:
Michael Scire 2024-10-09 21:46:15 -07:00 committed by SciresM
parent 912b84c4e3
commit 3b03b9603c

View file

@ -3834,15 +3834,15 @@ namespace ams::kern {
switch (dst_state) { switch (dst_state) {
case KMemoryState_Ipc: case KMemoryState_Ipc:
test_state = KMemoryState_FlagCanUseIpc; test_state = KMemoryState_FlagCanUseIpc;
test_attr_mask = KMemoryAttribute_Uncached | KMemoryAttribute_DeviceShared | KMemoryAttribute_Locked; test_attr_mask = KMemoryAttribute_All & (~(KMemoryAttribute_PermissionLocked | KMemoryAttribute_IpcLocked));
break; break;
case KMemoryState_NonSecureIpc: case KMemoryState_NonSecureIpc:
test_state = KMemoryState_FlagCanUseNonSecureIpc; test_state = KMemoryState_FlagCanUseNonSecureIpc;
test_attr_mask = KMemoryAttribute_Uncached | KMemoryAttribute_Locked; test_attr_mask = KMemoryAttribute_All & (~(KMemoryAttribute_PermissionLocked | KMemoryAttribute_DeviceShared | KMemoryAttribute_IpcLocked));
break; break;
case KMemoryState_NonDeviceIpc: case KMemoryState_NonDeviceIpc:
test_state = KMemoryState_FlagCanUseNonDeviceIpc; test_state = KMemoryState_FlagCanUseNonDeviceIpc;
test_attr_mask = KMemoryAttribute_Uncached | KMemoryAttribute_Locked; test_attr_mask = KMemoryAttribute_All & (~(KMemoryAttribute_PermissionLocked | KMemoryAttribute_DeviceShared | KMemoryAttribute_IpcLocked));
break; break;
default: default:
R_THROW(svc::ResultInvalidCombination()); R_THROW(svc::ResultInvalidCombination());