[FASTFAT]

Fix a fixme in VfatGetUserBuffer():
Only request high priority page when in the paging path. Otherwise, request normal priority

svn path=/trunk/; revision=67808
This commit is contained in:
Pierre Schweitzer 2015-05-17 12:22:28 +00:00
parent 22106e6ce1
commit 89eca90722
4 changed files with 8 additions and 8 deletions

View file

@ -419,7 +419,7 @@ DoQuery(
ProbeForWrite(IrpContext->Irp->UserBuffer, BufferLength, 1); ProbeForWrite(IrpContext->Irp->UserBuffer, BufferLength, 1);
} }
#endif #endif
Buffer = VfatGetUserBuffer(IrpContext->Irp); Buffer = VfatGetUserBuffer(IrpContext->Irp, FALSE);
if (!ExAcquireResourceSharedLite(&pFcb->MainResource, if (!ExAcquireResourceSharedLite(&pFcb->MainResource,
(BOOLEAN)(IrpContext->Flags & IRPCONTEXT_CANWAIT))) (BOOLEAN)(IrpContext->Flags & IRPCONTEXT_CANWAIT)))

View file

@ -327,15 +327,14 @@ VfatQueueRequest(
PVOID PVOID
VfatGetUserBuffer( VfatGetUserBuffer(
IN PIRP Irp) IN PIRP Irp,
IN BOOLEAN Paging)
{ {
ASSERT(Irp); ASSERT(Irp);
if (Irp->MdlAddress) if (Irp->MdlAddress)
{ {
/* This call may be in the paging path, so use maximum priority */ return MmGetSystemAddressForMdlSafe(Irp->MdlAddress, (Paging ? HighPagePriority : NormalPagePriority));
/* FIXME: call with normal priority in the non-paging path */
return MmGetSystemAddressForMdlSafe(Irp->MdlAddress, HighPagePriority);
} }
else else
{ {

View file

@ -655,7 +655,7 @@ VfatRead(
} }
} }
Buffer = VfatGetUserBuffer(IrpContext->Irp); Buffer = VfatGetUserBuffer(IrpContext->Irp, IrpContext->Irp->Flags & IRP_PAGING_IO);
if (!Buffer) if (!Buffer)
{ {
Status = STATUS_INVALID_USER_BUFFER; Status = STATUS_INVALID_USER_BUFFER;
@ -926,7 +926,7 @@ VfatWrite(
OldFileSize = Fcb->RFCB.FileSize; OldFileSize = Fcb->RFCB.FileSize;
Buffer = VfatGetUserBuffer(IrpContext->Irp); Buffer = VfatGetUserBuffer(IrpContext->Irp, IrpContext->Irp->Flags & IRP_PAGING_IO);
if (!Buffer) if (!Buffer)
{ {
Status = STATUS_INVALID_USER_BUFFER; Status = STATUS_INVALID_USER_BUFFER;

View file

@ -928,7 +928,8 @@ VfatBuildRequest(
PVOID PVOID
VfatGetUserBuffer( VfatGetUserBuffer(
IN PIRP); IN PIRP,
IN BOOLEAN Paging);
NTSTATUS NTSTATUS
VfatLockUserBuffer( VfatLockUserBuffer(