From 3520492f0972de9df2f97c3ff7ee2cb253b9311b Mon Sep 17 00:00:00 2001 From: Johannes Schlatow Date: Tue, 24 Jan 2023 17:05:52 +0100 Subject: [PATCH] platform_drv: fix update_policy() The method did not handle device changes properly. When a new policy does not contain an owned device any more, we must consider this device as changed and release it. Moreover, the warning messages were interchanged. genodelabs/genode#4761 --- repos/os/src/drivers/platform/session_component.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/os/src/drivers/platform/session_component.cc b/repos/os/src/drivers/platform/session_component.cc index ad6c405bbe..a913efdf11 100644 --- a/repos/os/src/drivers/platform/session_component.cc +++ b/repos/os/src/drivers/platform/session_component.cc @@ -84,13 +84,13 @@ void Session_component::update_policy(bool info, Policy_version version) _devices.for_each([&] (Device const & dev) { if (dev.name() != dc.device()) return; - state = (dev.owner() == _owner_id) ? UNCHANGED : CHANGED; + state = (dev.owner() == _owner_id && matches(dev)) ? UNCHANGED : CHANGED; }); if (state == UNCHANGED) return; - if (state == AWAY) + if (state == CHANGED) warning("Device ", dc.device(), " has changed, will close device session"); else