From d10c7decd5d2063a4582ac90fd78c7a9b842e28a Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 26 Oct 2014 18:48:30 +0000 Subject: [PATCH] [FASTFAT] Acquire DirResource in DoQuery() before attempting to play with FCBs. This is dedicated to Thomas ;-) svn path=/trunk/; revision=65024 --- reactos/drivers/filesystems/fastfat/dir.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/reactos/drivers/filesystems/fastfat/dir.c b/reactos/drivers/filesystems/fastfat/dir.c index 57fda52556f..bf7dd1307da 100644 --- a/reactos/drivers/filesystems/fastfat/dir.c +++ b/reactos/drivers/filesystems/fastfat/dir.c @@ -504,6 +504,13 @@ DoQuery( DirContext.ShortNameU.Buffer = ShortNameBuffer; DirContext.ShortNameU.MaximumLength = sizeof(ShortNameBuffer); + if (!ExAcquireResourceExclusiveLite(&IrpContext->DeviceExt->DirResource, + (BOOLEAN)(IrpContext->Flags & IRPCONTEXT_CANWAIT))) + { + ExReleaseResourceLite(&pFcb->MainResource); + return VfatQueueRequest(IrpContext); + } + while ((Status == STATUS_SUCCESS) && (BufferLength > 0)) { Status = FindFile(IrpContext->DeviceExt, @@ -579,6 +586,7 @@ DoQuery( IrpContext->Irp->IoStatus.Information = Stack->Parameters.QueryDirectory.Length - BufferLength; } + ExReleaseResourceLite(&IrpContext->DeviceExt->DirResource); ExReleaseResourceLite(&pFcb->MainResource); return Status;