From 057719ef904e9c6fb0146f97b575d4a93ce23c06 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 23 Nov 2019 15:08:27 -0500 Subject: [PATCH] kernel/port: Handle mutex_lock returning an error status code. This can occur if the mutex in question is destroyed while we are waiting for it. --- src/system/kernel/port.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/port.cpp b/src/system/kernel/port.cpp index 6d92e92172..75240a4e8c 100644 --- a/src/system/kernel/port.cpp +++ b/src/system/kernel/port.cpp @@ -633,9 +633,10 @@ get_locked_port(port_id id) GCC_2_NRV(portRef) portRef.SetTo(sPorts.Lookup(id)); } - if (portRef != NULL && portRef->state == Port::kActive) - mutex_lock(&portRef->lock); - else + if (portRef != NULL && portRef->state == Port::kActive) { + if (mutex_lock(&portRef->lock) != B_OK) + portRef.Unset(); + } else portRef.Unset(); return portRef;