From 12002c540c9de2342d829c5b073c65cfb4549b35 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 27 Jul 2026 00:08:49 +0200 Subject: kapi: fix driver registry locking --- kernel/kapi/devices/driver_registry.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'kernel/kapi/devices/driver_registry.cpp') diff --git a/kernel/kapi/devices/driver_registry.cpp b/kernel/kapi/devices/driver_registry.cpp index 842dbc1d..7abb121f 100644 --- a/kernel/kapi/devices/driver_registry.cpp +++ b/kernel/kapi/devices/driver_registry.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -55,7 +56,10 @@ namespace kapi::devices auto driver_registry::add(kstd::shared_ptr driver) -> void { - m_drivers.emplace_back(std::move(driver)); + { + auto guard = kstd::lock_guard{m_lock}; + m_drivers.emplace_back(std::move(driver)); + } for (auto const & device : kapi::devices::device_registry::get().all()) { @@ -85,9 +89,15 @@ namespace kapi::devices return; } + auto drivers = kstd::vector>{}; + { + auto guard = kstd::lock_guard{m_lock}; + drivers = m_drivers; + } + auto candidates = kstd::vector{}; - for (auto const & driver : m_drivers) + for (auto const & driver : drivers) { auto match = protocol->match(*device, *driver); if (match) -- cgit v1.2.3