diff --git a/tools/virsh-console.c b/tools/virsh-console.c index 9c39ac42d2..c664a3a6cd 100644 --- a/tools/virsh-console.c +++ b/tools/virsh-console.c @@ -356,6 +356,8 @@ vshRunConsole(vshControl *ctl, if (virCondInit(&con->cond) < 0 || virMutexInit(&con->lock) < 0) goto cleanup; + virMutexLock(&con->lock); + con->stdinWatch = virEventAddHandle(STDIN_FILENO, VIR_EVENT_HANDLE_READABLE, virConsoleEventOnStdin, @@ -375,11 +377,14 @@ vshRunConsole(vshControl *ctl, while (!con->quit) { if (virCondWait(&con->cond, &con->lock) < 0) { + virMutexUnlock(&con->lock); VIR_ERROR(_("unable to wait on console condition")); goto cleanup; } } + virMutexUnlock(&con->lock); + ret = 0; cleanup: