From 7fcfa4ede50b3216f6aed9f208466199909a64de Mon Sep 17 00:00:00 2001 From: Benjamin Lamowski Date: Thu, 12 Dec 2024 12:50:37 +0100 Subject: [PATCH] squash "base: make Ram_allocator noncopyable" (new commit message) Prevent erratic runtime behavior stemming from accidentally passing a copy to a `Ram_allocator` by making the interface noncopyable. In consequence, we had to provide an explicit copy constructor for `Session_env` in server/nic_router, which will be reconsidered in issue #5405. Issue #5221 --- repos/os/src/server/nic_router/session_env.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/repos/os/src/server/nic_router/session_env.h b/repos/os/src/server/nic_router/session_env.h index e83c800521..98dbd3ddbc 100644 --- a/repos/os/src/server/nic_router/session_env.h +++ b/repos/os/src/server/nic_router/session_env.h @@ -104,6 +104,18 @@ class Genode::Session_env : public Ram_allocator, _cap_guard { cap_quota } { } + /* + * The Ram_allocator interface is Noncopyable, but this + * implementation is safe to copy. + */ + Session_env(Session_env const &session) + : + _env { session._env }, + _shared_quota { session._shared_quota }, + _ram_guard { session._ram_guard }, + _cap_guard { session._cap_guard } + { } + Entrypoint &ep() { return _env.ep(); }