diff options
author | Alin Serdean <aserdean@cloudbasesolutions.com> | 2014-10-23 23:38:21 +0000 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2014-10-24 08:58:57 -0700 |
commit | 3a17f00f784b4b47917f336ca19bdc7078faade5 (patch) | |
tree | e2feee97d7f3515a9710802c011a5fd1db98c6b7 /datapath-windows/ovsext | |
parent | e1799eb718abe57e666ab8d875689e3b2f2927dc (diff) | |
download | openvswitch-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')
-rw-r--r-- | datapath-windows/ovsext/Event.c | 5 |
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"); |