From ac0562ec180c30119f3bb54823fb7970815efd66 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 12 Jul 2018 16:34:55 +0200 Subject: [PATCH] base: avoid Pd_session::Invalid_session condition By adding a sanity check for the validity of the PD session targeted by a transfer_quota operation, the corner case of an incomplete PD session of a child can no longer trigger an 'Invalid_session' exception. --- repos/base/include/base/child.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/repos/base/include/base/child.h b/repos/base/include/base/child.h index ea001a4ea0..8ea9065c9a 100644 --- a/repos/base/include/base/child.h +++ b/repos/base/include/base/child.h @@ -473,8 +473,13 @@ class Genode::Child : protected Rpc_object, Ram_quota const ram_quota { CONNECTION::RAM_QUOTA }; Cap_quota const cap_quota { CONNECTION::CAP_QUOTA }; - _child._policy.ref_pd().transfer_quota(cap(ram_quota), ram_quota); - _child._policy.ref_pd().transfer_quota(cap(cap_quota), cap_quota); + + if (cap(ram_quota).valid()) + _child._policy.ref_pd().transfer_quota(cap(ram_quota), ram_quota); + + if (cap(cap_quota).valid()) + _child._policy.ref_pd().transfer_quota(cap(cap_quota), cap_quota); + _first_request = false; }