idm: Fix minor race in cellVdecClose, sys_raw_spu_destroy...

Because of racing removal of IDs vs the shared pointer owned object
This commit is contained in:
Eladash 2020-03-14 13:27:18 +02:00
parent efe6e1eb0a
commit c16124f0d9
6 changed files with 33 additions and 20 deletions

View file

@ -693,7 +693,13 @@ error_code cellVdecClose(ppu_thread& ppu, u32 handle)
}
ppu_execute<&sys_interrupt_thread_disestablish>(ppu, vdec->ppu_tid);
idm::remove<vdec_context>(handle);
if (!idm::remove_verify<vdec_context>(handle, std::move(vdec)))
{
// Other thread removed it beforehead
return CELL_VDEC_ERROR_ARG;
}
return CELL_OK;
}