From ca9ae43e5009938c100aa7f8ebe896f3e913de58 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Tue, 12 Nov 2013 19:55:05 +0100 Subject: [PATCH] base-linux: round up RM session size to page size Since RM sessions can be used as dataspaces and dataspace sizes are supposed to have page granularity, RM session sizes should have page granularity, too. Fixes #972. --- base-linux/src/base/env/platform_env.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/base-linux/src/base/env/platform_env.cc b/base-linux/src/base/env/platform_env.cc index e37ee7b8f..df6d7ec80 100644 --- a/base-linux/src/base/env/platform_env.cc +++ b/base-linux/src/base/env/platform_env.cc @@ -54,6 +54,9 @@ Platform_env_base::Rm_session_mmap::_dataspace_writable(Dataspace_capability ds) ** Platform_env::Local_parent ** ********************************/ +static inline size_t get_page_size_log2() { return 12; } + + Session_capability Platform_env::Local_parent::session(Service_name const &service_name, Session_args const &args, @@ -69,6 +72,9 @@ Platform_env::Local_parent::session(Service_name const &service_name, if (size == 0) return Expanding_parent_client::session(service_name, args, affinity); + if (size != ~0UL) + size = align_addr(size, get_page_size_log2()); + Rm_session_mmap *rm = new (env()->heap()) Rm_session_mmap(true, size);