From 0ec5291c703655f9c1132e74ff93fc1d850b617b Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sun, 7 Feb 2016 16:55:08 -0800 Subject: [PATCH] sys: IRP_MJ_QUERY_INFORMATION: correctly retry IRP completion --- src/sys/fileinfo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/sys/fileinfo.c b/src/sys/fileinfo.c index 17e98f79..acdb6b00 100644 --- a/src/sys/fileinfo.c +++ b/src/sys/fileinfo.c @@ -478,6 +478,7 @@ NTSTATUS FspFsvolQueryInformationComplete( FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp); FSP_FSCTL_FILE_INFO FileInfoBuf; const FSP_FSCTL_FILE_INFO *FileInfo; + BOOLEAN Success; if (0 != FspIopRequestContext(Request, RequestFileNode)) { @@ -487,9 +488,14 @@ NTSTATUS FspFsvolQueryInformationComplete( FspFileNodeReleaseOwner(FileNode, Full, Request); } - if (!FspFileNodeTryAcquireExclusive(FileNode, Main)) + Success = DEBUGRANDTEST(90, TRUE) && FspFileNodeTryAcquireExclusive(FileNode, Main); + if (!Success) + { FspIopRetryCompleteIrp(Irp, Response, &Result); + return Result; + } + if (!FspFileNodeTrySetFileInfo(FileNode, FileObject, &Response->Rsp.QueryInformation.FileInfo, (ULONG)(UINT_PTR)FspIopRequestContext(Request, RequestInfoChangeNumber))) {