Kernel: Remove big lock from sys$set_coredump_metadata

The only requirement for this syscall is to make
Process::m_coredump_properties SpinlockProtected.
This commit is contained in:
Luke Wilde 2022-04-09 18:30:20 +01:00 committed by Andreas Kling
parent 343aec2200
commit 1682b0b6d8
Notes: sideshowbarker 2024-07-17 14:14:14 +09:00
5 changed files with 25 additions and 18 deletions

View file

@ -874,15 +874,18 @@ void Process::set_dumpable(bool dumpable)
ErrorOr<void> Process::set_coredump_property(NonnullOwnPtr<KString> key, NonnullOwnPtr<KString> value)
{
// Write it into the first available property slot.
for (auto& slot : m_coredump_properties) {
if (slot.key)
continue;
slot.key = move(key);
slot.value = move(value);
return {};
}
return ENOBUFS;
return m_coredump_properties.with([&](auto& coredump_properties) -> ErrorOr<void> {
// Write it into the first available property slot.
for (auto& slot : coredump_properties) {
if (slot.key)
continue;
slot.key = move(key);
slot.value = move(value);
return {};
}
return ENOBUFS;
});
}
ErrorOr<void> Process::try_set_coredump_property(StringView key, StringView value)