git: eacc27affeff - main - bhyve: Move the gdb_active check to gdb_cpu_suspend().

John Baldwin jhb at FreeBSD.org
Mon Apr 12 18:44:31 UTC 2021


The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=eacc27affeff17beb3791793ba54458444df7135

commit eacc27affeff17beb3791793ba54458444df7135
Author:     John Baldwin <jhb at FreeBSD.org>
AuthorDate: 2021-04-12 18:43:34 +0000
Commit:     John Baldwin <jhb at FreeBSD.org>
CommitDate: 2021-04-12 18:43:34 +0000

    bhyve: Move the gdb_active check to gdb_cpu_suspend().
    
    The check needs to be in the public routine (gdb_cpu_suspend()), not
    in the internal routine called from various places
    (_gdb_cpu_suspend()).  All the other callers of _gdb_cpu_suspend()
    already check gdb_active, and this breaks the use of snapshots when
    the debug server is not enabled since gdb_cpu_suspend() tries to lock
    an uninitialized mutex.
    
    Reported by:    Darius Mihai, Elena Mihailescu
    Reviewed by:    elenamihailescu22_gmail.com
    Fixes:          621b5090487de9fed1b503769702a9a2a27cc7bb
    Differential Revision:  https://reviews.freebsd.org/D29538
---
 usr.sbin/bhyve/gdb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/usr.sbin/bhyve/gdb.c b/usr.sbin/bhyve/gdb.c
index c4c37ab80bc7..5df10467cd62 100644
--- a/usr.sbin/bhyve/gdb.c
+++ b/usr.sbin/bhyve/gdb.c
@@ -731,8 +731,6 @@ static void
 _gdb_cpu_suspend(int vcpu, bool report_stop)
 {
 
-	if (!gdb_active)
-		return;
 	debug("$vCPU %d suspending\n", vcpu);
 	CPU_SET(vcpu, &vcpus_waiting);
 	if (report_stop && CPU_CMP(&vcpus_waiting, &vcpus_suspended) == 0)
@@ -807,6 +805,8 @@ void
 gdb_cpu_suspend(int vcpu)
 {
 
+	if (!gdb_active)
+		return;
 	pthread_mutex_lock(&gdb_lock);
 	_gdb_cpu_suspend(vcpu, true);
 	gdb_cpu_resume(vcpu);


More information about the dev-commits-src-all mailing list