kernel/svc: Move and correct returned error code for invalid thread priorities in SetThreadPriority()
All priority checks are supposed to occur before checking the validity of the thread handle, we're also not supposed to return ERR_NOT_AUTHORIZED here.
This commit is contained in:
parent
c7c346a15d
commit
77328b0f19
|
@ -594,16 +594,17 @@ static ResultCode SetThreadPriority(Handle handle, u32 priority) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto* const current_process = Core::CurrentProcess();
|
const auto* const current_process = Core::CurrentProcess();
|
||||||
SharedPtr<Thread> thread = current_process->GetHandleTable().Get<Thread>(handle);
|
|
||||||
if (!thread) {
|
|
||||||
return ERR_INVALID_HANDLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note: The kernel uses the current process's resource limit instead of
|
// Note: The kernel uses the current process's resource limit instead of
|
||||||
// the one from the thread owner's resource limit.
|
// the one from the thread owner's resource limit.
|
||||||
const ResourceLimit& resource_limit = current_process->GetResourceLimit();
|
const ResourceLimit& resource_limit = current_process->GetResourceLimit();
|
||||||
if (resource_limit.GetMaxResourceValue(ResourceType::Priority) > priority) {
|
if (resource_limit.GetMaxResourceValue(ResourceType::Priority) > priority) {
|
||||||
return ERR_NOT_AUTHORIZED;
|
return ERR_INVALID_THREAD_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
SharedPtr<Thread> thread = current_process->GetHandleTable().Get<Thread>(handle);
|
||||||
|
if (!thread) {
|
||||||
|
return ERR_INVALID_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
thread->SetPriority(priority);
|
thread->SetPriority(priority);
|
||||||
|
|
Reference in New Issue