summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/User.c
diff options
context:
space:
mode:
authorEitan Eliahu <eliahue@vmware.com>2014-10-24 17:46:39 -0700
committerBen Pfaff <blp@nicira.com>2014-10-28 07:59:49 -0700
commit777d2bbd46f00594a88f546fe270232c8962d5e7 (patch)
tree175977a7e221373d7553dd1ead4ac4c330c07cce /datapath-windows/ovsext/User.c
parent451b910881b3e16ff8744484f883c50971ca9ff5 (diff)
downloadopenvswitch-777d2bbd46f00594a88f546fe270232c8962d5e7.tar.gz
datapath-windows:Remove user mode instance from pid hash on process termination
The instance should be removed from pid-hash when vswitchd.exe terminates so the driver won't access it during packet miss (causing BSOD) Signed-off-by: Eitan Eliahu <eliahue@vmware.com> Acked-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Acked-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/User.c')
-rw-r--r--datapath-windows/ovsext/User.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/User.c b/datapath-windows/ovsext/User.c
index 501dc12c4..fc27f7d54 100644
--- a/datapath-windows/ovsext/User.c
+++ b/datapath-windows/ovsext/User.c
@@ -98,6 +98,7 @@ OvsCleanupPacketQueue(POVS_OPEN_INSTANCE instance)
LIST_ENTRY tmp;
PIRP irp = NULL;
+ ASSERT(instance);
InitializeListHead(&tmp);
queue = (POVS_USER_PACKET_QUEUE)instance->packetQueue;
if (queue) {
@@ -139,6 +140,11 @@ OvsCleanupPacketQueue(POVS_OPEN_INSTANCE instance)
if (queue) {
OvsFreeMemory(queue);
}
+
+ /* Remove the instance from pidHashArray */
+ OvsAcquirePidHashLock();
+ OvsDelPidInstance(gOvsSwitchContext, instance->pid);
+ OvsReleasePidHashLock();
}
NTSTATUS