[Zion] Remove all capabilities on process cleanup.

This commit is contained in:
Drew Galbraith 2023-11-24 17:05:11 -08:00
parent 430dc36728
commit e50d3f8abc
3 changed files with 14 additions and 1 deletions

View File

@ -33,3 +33,13 @@ glcr::RefPtr<Capability> CapabilityTable::ReleaseCapability(uint64_t id) {
(void)capabilities_.Delete(id);
return cap;
}
void CapabilityTable::ReleaseAll() {
for (uint64_t i = 0; i < next_cap_id_; i++) {
(void)capabilities_.Delete(i);
}
if (capabilities_.size() != 0) {
dbgln("Capabilities still remaining after clear: {x}",
capabilities_.size());
}
}

View File

@ -25,6 +25,8 @@ class CapabilityTable {
glcr::RefPtr<Capability> GetCapability(uint64_t id);
glcr::RefPtr<Capability> ReleaseCapability(uint64_t id);
void ReleaseAll();
private:
glcr::RefPtr<Mutex> lock_ = Mutex::Create();
// TODO: Do some randomization.

View File

@ -98,7 +98,8 @@ void Process::Cleanup() {
}
}
// 2. Release all capabailities. TODO
// 2. Release all capabailities.
caps_.ReleaseAll();
// 3. Unmap all user memory. TODO