From 3fe0e280b1ab4305c753e1facae0323e5053ac3b Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 18 Feb 2018 13:58:01 +0100 Subject: [PATCH] [KMTESTS:CC] Add IRQL tests for CcCopyRead showing that a spinlock is held during Cc IO operations. CORE-14349 --- modules/rostests/kmtests/ntos_cc/CcCopyRead_drv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/rostests/kmtests/ntos_cc/CcCopyRead_drv.c b/modules/rostests/kmtests/ntos_cc/CcCopyRead_drv.c index cc98945a04c..d7540f72e01 100644 --- a/modules/rostests/kmtests/ntos_cc/CcCopyRead_drv.c +++ b/modules/rostests/kmtests/ntos_cc/CcCopyRead_drv.c @@ -172,6 +172,8 @@ TestIrpHandler( if (IoStack->MajorFunction == IRP_MJ_CREATE) { + ok(KeGetCurrentIrql() == PASSIVE_LEVEL, "Wrong IRQL: %d\n", KeGetCurrentIrql()); + if (IoStack->FileObject->FileName.Length >= 2 * sizeof(WCHAR)) { TestDeviceObject = DeviceObject; @@ -235,6 +237,7 @@ TestIrpHandler( if (!FlagOn(Irp->Flags, IRP_NOCACHE)) { + ok(KeGetCurrentIrql() == PASSIVE_LEVEL, "Wrong IRQL: %d\n", KeGetCurrentIrql()); ok(Offset.QuadPart % PAGE_SIZE != 0, "Offset is aligned: %I64i\n", Offset.QuadPart); ok(Length % PAGE_SIZE != 0, "Length is aligned: %I64i\n", Length); @@ -271,6 +274,7 @@ TestIrpHandler( { PMDL Mdl; + ok(KeGetCurrentIrql() == APC_LEVEL, "Wrong IRQL: %d\n", KeGetCurrentIrql()); ok((Offset.QuadPart % PAGE_SIZE == 0 || Offset.QuadPart == 0), "Offset is not aligned: %I64i\n", Offset.QuadPart); ok(Length % PAGE_SIZE == 0, "Length is not aligned: %I64i\n", Length); @@ -301,6 +305,7 @@ TestIrpHandler( } else if (IoStack->MajorFunction == IRP_MJ_CLEANUP) { + ok(KeGetCurrentIrql() == PASSIVE_LEVEL, "Wrong IRQL: %d\n", KeGetCurrentIrql()); KeInitializeEvent(&CacheUninitEvent.Event, NotificationEvent, FALSE); CcUninitializeCacheMap(IoStack->FileObject, NULL, &CacheUninitEvent); KeWaitForSingleObject(&CacheUninitEvent.Event, Executive, KernelMode, FALSE, NULL);