summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Event.c
diff options
context:
space:
mode:
authorAlin Serdean <aserdean@cloudbasesolutions.com>2014-10-23 23:38:21 +0000
committerBen Pfaff <blp@nicira.com>2014-10-24 08:58:57 -0700
commit3a17f00f784b4b47917f336ca19bdc7078faade5 (patch)
treee2feee97d7f3515a9710802c011a5fd1db98c6b7 /datapath-windows/ovsext/Event.c
parente1799eb718abe57e666ab8d875689e3b2f2927dc (diff)
downloadopenvswitch-3a17f00f784b4b47917f336ca19bdc7078faade5.tar.gz
datapath-windows: Avoid BSOD when no event queue found.
kd> ??instance struct _OVS_OPEN_INSTANCE * 0xffffe000`037f2880 +0x000 cookie : 1 +0x008 fileObject : 0xffffe000`02c59f20 _FILE_OBJECT +0x010 eventQueue : (null) +0x018 packetQueue : 0xffffe000`02d50100 _OVS_USER_PACKET_QUEUE +0x020 pid : 2 +0x024 inUse : 0n1 +0x028 dumpState : <unnamed-tag> +0x038 pidLink : _LIST_ENTRY [ 0xffffe000`03ad83f0 - 0xffffe000`03ad83f0 ] kd> k Child-SP RetAddr Call Site ffffd000`2876eb18 fffff801`f364b7c6 nt!DbgBreakPointWithStatus ffffd000`2876eb20 fffff801`f364b0d7 nt!KiBugCheckDebugBreak+0x12 ffffd000`2876eb80 fffff801`f35c21a4 nt!KeBugCheck2+0x8ab ffffd000`2876f290 fffff801`f35cdbe9 nt!KeBugCheckEx+0x104 ffffd000`2876f2d0 fffff801`f35cc43a nt!KiBugCheckDispatch+0x69 ffffd000`2876f410 fffff800`02626666 nt!KiPageFault+0x23a ffffd000`2876f5a0 fffff800`026318d7 OVSExt!OvsWaitEventIoctl+0x116 [c:\work\ovs\datapath-windows\ovsext\event.c @ 472] ffffd000`2876f610 fffff800`026339b4 OVSExt!OvsPendEventCmdHandler+0x57 [c:\work\ovs\datapath-windows\ovsext\datapath.c @ 1056] ffffd000`2876f660 fffff800`0264d9c5 OVSExt!InvokeNetlinkCmdHandler+0xf4 [c:\work\ovs\datapath-windows\ovsext\datapath.c @ 938] ffffd000`2876f6b0 fffff800`006f1c18 OVSExt!OvsDeviceControl+0x855 [c:\work\ovs\datapath-windows\ovsext\datapath.c @ 853] ffffd000`2876f840 fffff801`f383c395 NDIS!ndisDummyIrpHandler+0x88 ffffd000`2876f870 fffff801`f383cd2a nt!IopXxxControlFile+0x845 ffffd000`2876fa20 fffff801`f35cd8b3 nt!NtDeviceIoControlFile+0x56 ffffd000`2876fa90 00000000`775c2772 nt!KiSystemServiceCopyEnd+0x13 00000000`010feef8 00000000`775c2371 wow64cpu!CpupSyscallStub+0x2 00000000`010fef00 00000000`7765323a wow64cpu!DeviceIoctlFileFault+0x31 00000000`010fefb0 00000000`7765317e wow64!RunCpuSimulation+0xa 00000000`010ff000 00007ff8`f1076bd0 wow64!Wow64LdrpInitialize+0x172 00000000`010ff540 00007ff8`f1076aa6 ntdll!_LdrpInitialize+0xd8 00000000`010ff5b0 00000000`00000000 ntdll!LdrInitializeThunk+0xe kd> ??poll struct _OVS_EVENT_POLL * 0xffffd000`2876f640 +0x000 cookie : 0x3a9ae28 +0x004 dpNo : 0 SYMBOL_STACK_INDEX: 6 SYMBOL_NAME: OVSExt!OvsWaitEventIoctl+116 FOLLOWUP_NAME: MachineOwner MODULE_NAME: OVSExt IMAGE_NAME: OVSExt.sys DEBUG_FLR_IMAGE_TIMESTAMP: 54498bc5 BUCKET_ID_FUNC_OFFSET: 116 FAILURE_BUCKET_ID: AV_OVSExt!OvsWaitEventIoctl BUCKET_ID: AV_OVSExt!OvsWaitEventIoctl ANALYSIS_SOURCE: KM FAILURE_ID_HASH_STRING: km:av_ovsext!ovswaiteventioctl FAILURE_ID_HASH: {07550bfb-c3b5-0412-b95d-f89a5c4671a9} Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Eitan Eliahu <eliahue@vmware.com> Acked-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Acked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/Event.c')
-rw-r--r--datapath-windows/ovsext/Event.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/Event.c b/datapath-windows/ovsext/Event.c
index 656f71986..d38bc7052 100644
--- a/datapath-windows/ovsext/Event.c
+++ b/datapath-windows/ovsext/Event.c
@@ -469,6 +469,11 @@ OvsWaitEventIoctl(PIRP irp,
}
queue = (POVS_EVENT_QUEUE)instance->eventQueue;
+ if (queue == NULL) {
+ OvsReleaseEventQueueLock();
+ OVS_LOG_TRACE("Exit: Event queue does not exist");
+ return STATUS_INVALID_PARAMETER;
+ }
if (queue->pendingIrp) {
OvsReleaseEventQueueLock();
OVS_LOG_TRACE("Exit: Event queue already in pending state");