From 1286b967ed642d720b53ba520fae619494d28c01 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Mon, 10 Oct 2022 13:55:13 +0200 Subject: [PATCH] virtualbox5/6: handle NIC setup correctly During initialization _handle_link_state may be called concurrently from EMT and "nic_ep" (signal handler). Therefore, sent signal to "nic_ep" instead of calling _handle_link_state from EMT thread. issue #4632 --- repos/ports/src/virtualbox5/network.cpp | 4 ++-- repos/ports/src/virtualbox6/network.cc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/repos/ports/src/virtualbox5/network.cpp b/repos/ports/src/virtualbox5/network.cpp index efbee88777..12b4d1e2e5 100644 --- a/repos/ports/src/virtualbox5/network.cpp +++ b/repos/ports/src/virtualbox5/network.cpp @@ -225,8 +225,8 @@ class Nic_client _nic.rx_channel()->sigh_packet_avail(_rx_packet_avail_dispatcher); _nic.rx_channel()->sigh_ready_to_ack(_rx_ready_to_ack_dispatcher); - /* set initial link-state */ - _handle_link_state(); + /* inform signal handler ep */ + _link_state_dispatcher.local_submit(); } Genode::Signal_context_capability dispatcher() { return _destruct_dispatcher; } diff --git a/repos/ports/src/virtualbox6/network.cc b/repos/ports/src/virtualbox6/network.cc index 91c81f4008..e58bd17485 100644 --- a/repos/ports/src/virtualbox6/network.cc +++ b/repos/ports/src/virtualbox6/network.cc @@ -240,8 +240,8 @@ class Nic_client _nic.rx_channel()->sigh_packet_avail(_rx_packet_avail_dispatcher); _nic.rx_channel()->sigh_ready_to_ack(_rx_ready_to_ack_dispatcher); - /* set initial link-state */ - _handle_link_state(); + /* inform signal handler ep */ + _link_state_dispatcher.local_submit(); } Genode::Signal_context_capability dispatcher() { return _destruct_dispatcher; }