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;
|
FileAttributes = 0;
|
||||||
|
|
||||||
/* remember the main file node */
|
/* remember the main file node */
|
||||||
|
ASSERT(0 == FileNode->MainFileNode);
|
||||||
FileNode->MainFileNode = FileDesc->MainFileObject->FsContext;
|
FileNode->MainFileNode = FileDesc->MainFileObject->FsContext;
|
||||||
|
FspFileNodeReference(FileNode->MainFileNode);
|
||||||
|
|
||||||
Result = STATUS_SUCCESS;
|
Result = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
@ -1208,7 +1208,7 @@ typedef struct FSP_FILE_NODE
|
|||||||
UINT64 IndexNumber;
|
UINT64 IndexNumber;
|
||||||
BOOLEAN IsDirectory;
|
BOOLEAN IsDirectory;
|
||||||
BOOLEAN IsRootDirectory;
|
BOOLEAN IsRootDirectory;
|
||||||
struct FSP_FILE_NODE *MainFileNode; /* this becomes invalid after our last desc close */
|
struct FSP_FILE_NODE *MainFileNode;
|
||||||
WCHAR FileNameBuf[];
|
WCHAR FileNameBuf[];
|
||||||
} FSP_FILE_NODE;
|
} FSP_FILE_NODE;
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -252,6 +252,9 @@ VOID FspFileNodeDelete(FSP_FILE_NODE *FileNode)
|
|||||||
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension =
|
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension =
|
||||||
FspFsvolDeviceExtension(FileNode->FsvolDeviceObject);
|
FspFsvolDeviceExtension(FileNode->FsvolDeviceObject);
|
||||||
|
|
||||||
|
if (0 != FileNode->MainFileNode)
|
||||||
|
FspFileNodeDereference(FileNode->MainFileNode);
|
||||||
|
|
||||||
FsRtlUninitializeOplock(FspFileNodeAddrOfOplock(FileNode));
|
FsRtlUninitializeOplock(FspFileNodeAddrOfOplock(FileNode));
|
||||||
FsRtlUninitializeFileLock(&FileNode->FileLock);
|
FsRtlUninitializeFileLock(&FileNode->FileLock);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user