mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
sys: FSP_FILE_NODE::MainFileNode: reference/dereference on create/delete
This commit is contained in:
parent
fa54898c64
commit
e4b4e6a1f9
@ -444,7 +444,9 @@ static NTSTATUS FspFsvolCreateNoLock(
|
||||
FileAttributes = 0;
|
||||
|
||||
/* remember the main file node */
|
||||
ASSERT(0 == FileNode->MainFileNode);
|
||||
FileNode->MainFileNode = FileDesc->MainFileObject->FsContext;
|
||||
FspFileNodeReference(FileNode->MainFileNode);
|
||||
|
||||
Result = STATUS_SUCCESS;
|
||||
|
||||
|
@ -1208,7 +1208,7 @@ typedef struct FSP_FILE_NODE
|
||||
UINT64 IndexNumber;
|
||||
BOOLEAN IsDirectory;
|
||||
BOOLEAN IsRootDirectory;
|
||||
struct FSP_FILE_NODE *MainFileNode; /* this becomes invalid after our last desc close */
|
||||
struct FSP_FILE_NODE *MainFileNode;
|
||||
WCHAR FileNameBuf[];
|
||||
} FSP_FILE_NODE;
|
||||
typedef struct
|
||||
|
@ -252,6 +252,9 @@ VOID FspFileNodeDelete(FSP_FILE_NODE *FileNode)
|
||||
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension =
|
||||
FspFsvolDeviceExtension(FileNode->FsvolDeviceObject);
|
||||
|
||||
if (0 != FileNode->MainFileNode)
|
||||
FspFileNodeDereference(FileNode->MainFileNode);
|
||||
|
||||
FsRtlUninitializeOplock(FspFileNodeAddrOfOplock(FileNode));
|
||||
FsRtlUninitializeFileLock(&FileNode->FileLock);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user