if (contextId != VMCI_HOST_CONTEXT_ID) {
int result;
+ Bool headersMapped;
ASSERT(!isLocal);
* more recent VMX'en may detach from a queue pair in the quiesced state.
*/
+ VMCI_AcquireQueueMutex(entry->produceQ);
+ headersMapped = entry->produceQ->qHeader || entry->consumeQ->qHeader;
if (QPBROKERSTATE_HAS_MEM(entry)) {
- VMCI_AcquireQueueMutex(entry->produceQ);
result = VMCIHost_UnmapQueueHeaders(INVALID_VMCI_GUEST_MEM_ID,
entry->produceQ,
entry->consumeQ);
} else {
VMCIHost_UnregisterUserMemory(entry->produceQ, entry->consumeQ);
}
- VMCI_ReleaseQueueMutex(entry->produceQ);
- } else {
- VMCI_AcquireQueueMutex(entry->produceQ);
+ }
+ if (!headersMapped) {
QueuePairResetSavedHeaders(entry);
- VMCI_ReleaseQueueMutex(entry->produceQ);
- if (entry->wakeupCB) {
- entry->wakeupCB(entry->clientData);
- }
+ }
+ VMCI_ReleaseQueueMutex(entry->produceQ);
+ if (!headersMapped && entry->wakeupCB) {
+ entry->wakeupCB(entry->clientData);
}
} else {
if (entry->wakeupCB) {
#ifndef _VMCI_VERSION_H_
#define _VMCI_VERSION_H_
-#define VMCI_DRIVER_VERSION 9.3.13.0
-#define VMCI_DRIVER_VERSION_COMMAS 9,3,13,0
-#define VMCI_DRIVER_VERSION_STRING "9.3.13.0"
+#define VMCI_DRIVER_VERSION 9.3.14.0
+#define VMCI_DRIVER_VERSION_COMMAS 9,3,14,0
+#define VMCI_DRIVER_VERSION_STRING "9.3.14.0"
#endif /* _VMCI_VERSION_H_ */