sys: FspFileNodeCleanupComplete, FspFileNodeClose: fix problem with OpenCount handling

This commit is contained in:
Bill Zissimopoulos 2016-10-27 23:57:27 -07:00
parent 4417ebcc92
commit 1c85fb94f0

View File

@ -695,9 +695,11 @@ VOID FspFileNodeCleanupComplete(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject
{ {
PTruncateSize = &TruncateSize; PTruncateSize = &TruncateSize;
if (0 == --FileNode->OpenCount) FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName,
FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName, &DeletedFromContextTable);
&DeletedFromContextTable); ASSERT(DeletedFromContextTable);
FileNode->OpenCount = 0;
} }
else if (FileNode->TruncateOnClose && FlagOn(FileObject->Flags, FO_CACHE_SUPPORTED)) else if (FileNode->TruncateOnClose && FlagOn(FileObject->Flags, FO_CACHE_SUPPORTED))
{ {
@ -735,8 +737,11 @@ VOID FspFileNodeClose(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject)
FspFsvolDeviceLockContextTable(FsvolDeviceObject); FspFsvolDeviceLockContextTable(FsvolDeviceObject);
if (0 < FileNode->OpenCount && 0 == --FileNode->OpenCount) if (0 < FileNode->OpenCount && 0 == --FileNode->OpenCount)
{
FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName, FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName,
&DeletedFromContextTable); &DeletedFromContextTable);
ASSERT(DeletedFromContextTable);
}
FspFsvolDeviceUnlockContextTable(FsvolDeviceObject); FspFsvolDeviceUnlockContextTable(FsvolDeviceObject);