diff options
author | Eitan Eliahu <eliahue@vmware.com> | 2014-10-24 17:46:39 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2014-10-28 07:59:49 -0700 |
commit | 777d2bbd46f00594a88f546fe270232c8962d5e7 (patch) | |
tree | 175977a7e221373d7553dd1ead4ac4c330c07cce /datapath-windows/ovsext/User.c | |
parent | 451b910881b3e16ff8744484f883c50971ca9ff5 (diff) | |
download | openvswitch-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.c | 6 |
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 |