From 2300440e3d672b1c0fada8b0e3d02bda6c00ea9e Mon Sep 17 00:00:00 2001 From: Dibyamartanda Samanta Date: Fri, 24 May 2024 10:42:12 +0200 Subject: [PATCH] [NTOSKRNL:CC] MDL Handler Refactored for using RAII --- NTOSKRNL/CC/ccmdlhandler.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/NTOSKRNL/CC/ccmdlhandler.cpp b/NTOSKRNL/CC/ccmdlhandler.cpp index a2a71f9..7fdee96 100644 --- a/NTOSKRNL/CC/ccmdlhandler.cpp +++ b/NTOSKRNL/CC/ccmdlhandler.cpp @@ -43,7 +43,6 @@ CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, { PLARGE_INTEGER FOffset = nullptr; -KIRQL CurrentIrql = {0}; NTSTATUS Exception = {0}; PIO_STATUS_BLOCK IoStatus = nullptr; @@ -71,9 +70,9 @@ for( auto it = begin(MdlChain); it != end(MdlChain);++it) if (!(MdlChain->MdlFlags & 2) == 0)) { - CurrentIrql = KeAcquireQueuedSpinLock(LockQueueMasterLock); + SpinLockGuard lockGuard(LockQueueMasterLock); CcDecrementOpenCount(SharedCacheMap); - KeReleaseQueuedSpinLock(LockQueueMasterLock,CurrentIrql); + } if (!NT_SUCCESS(Exception)) { @@ -191,9 +190,9 @@ InterlockedExchange64(&PrivateCachemap->BeyondLastByte2.Quadpart,FinalLength); /* Update Shared Cachemap Flags */ if ( (SharedCacheMap->Flags & 8) != 0 ) { - KIRQL LAST_IRQL = KeAcquireQueuedSpinLock(LockQueueMasterLock); + SpinLockGuard lockGuard(LockQueueMasterLock); SharedCacheMap->Flags &= ~8; - KeReleaseQueuedSpinLock(LockQueueMasterLock, LAST_IRQL); + } /* Update IRP Bytes */ @@ -234,7 +233,6 @@ NTAPI CcMdlWriteAbort(IN PFILE_OBJECT FileObject, IN PMDL MdlChain) { -KIRQL CurrentIrql = {0}; PSHARED_CACHE_MAP SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap; @@ -248,9 +246,9 @@ for( auto it = begin(MdlChain); it != end(MdlChain);++it) } if ( (MdlChain->MdlFlags & 2) != 0 ) { - CurrentIrql = KeAcquireQueuedSpinLock(LockQueueMasterLock); + SpinLockGuard lockGuard(LockQueueMasterLock); CcDecrementOpenCount(SharedCacheMap); - KeReleaseQueuedSpinLock(LockQueueMasterLock, CurrentIrql); + } }