From 04345ff7a0e4a3b47da1d3d9f7cc78ebb6a6ecb4 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Wed, 6 Apr 2016 18:05:09 -0700 Subject: [PATCH] sys: FspFileNodeUnlockAll --- src/sys/cleanup.c | 3 +++ src/sys/driver.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/sys/cleanup.c b/src/sys/cleanup.c index 6ab177a1..1808a895 100644 --- a/src/sys/cleanup.c +++ b/src/sys/cleanup.c @@ -87,6 +87,9 @@ static NTSTATUS FspFsvolCleanup( FsvolDeviceExtension->NotifySync, &FsvolDeviceExtension->NotifyList, FileDesc); } + /* remove any locks for this file object */ + FspFileNodeUnlockAll(FileNode, FileObject, IoGetRequestorProcess(Irp)); + /* create the user-mode file system request; MustSucceed because IRP_MJ_CLEANUP cannot fail */ FspIopCreateRequestMustSucceedEx(Irp, DeletePending ? &FileNode->FileName : 0, 0, FspFsvolCleanupRequestFini, &Request); diff --git a/src/sys/driver.h b/src/sys/driver.h index e9ae2c2c..9dd6f430 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -967,6 +967,7 @@ NTSTATUS FspFileDescResetDirectoryPattern(FSP_FILE_DESC *FileDesc, #define FspFileNodeReleaseOwner(N,F,P) FspFileNodeReleaseOwnerF(N, FspFileNodeAcquire ## F, P) #define FspFileNodeDereferenceSecurity(P) FspMetaCacheDereferenceItemBuffer(P) #define FspFileNodeDereferenceDirInfo(P) FspMetaCacheDereferenceItemBuffer(P) +#define FspFileNodeUnlockAll(N,F,P) FsRtlFastUnlockAll(&(N)->FileLock, F, P, N) /* debug */ #if DBG