mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
- Wrap MmProbeAndLockPages invocations into SEH.
See issue #2121 for more details. svn path=/trunk/; revision=32054
This commit is contained in:
parent
07c489c7d2
commit
fca1165c23
1 changed files with 44 additions and 9 deletions
|
@ -1555,9 +1555,20 @@ NtQueryDirectoryFile(IN HANDLE FileHandle,
|
|||
}
|
||||
else if (DeviceObject->Flags & DO_DIRECT_IO)
|
||||
{
|
||||
/* Allocate an MDL */
|
||||
Mdl = IoAllocateMdl(FileInformation, Length, FALSE, TRUE, Irp);
|
||||
MmProbeAndLockPages(Mdl, PreviousMode, IoWriteAccess);
|
||||
_SEH_TRY
|
||||
{
|
||||
/* Allocate an MDL */
|
||||
Mdl = IoAllocateMdl(FileInformation, Length, FALSE, TRUE, Irp);
|
||||
MmProbeAndLockPages(Mdl, PreviousMode, IoWriteAccess);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
/* Allocating failed, clean up */
|
||||
IopCleanupAfterException(FileObject, Irp, Event, NULL);
|
||||
Status = _SEH_GetExceptionCode();
|
||||
_SEH_YIELD(return Status);
|
||||
}
|
||||
_SEH_END;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2119,9 +2130,21 @@ NtReadFile(IN HANDLE FileHandle,
|
|||
/* Check if we have a buffer length */
|
||||
if (Length)
|
||||
{
|
||||
/* Allocate an MDL */
|
||||
Mdl = IoAllocateMdl(Buffer, Length, FALSE, TRUE, Irp);
|
||||
MmProbeAndLockPages(Mdl, PreviousMode, IoWriteAccess);
|
||||
_SEH_TRY
|
||||
{
|
||||
/* Allocate an MDL */
|
||||
Mdl = IoAllocateMdl(Buffer, Length, FALSE, TRUE, Irp);
|
||||
MmProbeAndLockPages(Mdl, PreviousMode, IoWriteAccess);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
/* Allocating failed, clean up */
|
||||
IopCleanupAfterException(FileObject, Irp, Event, NULL);
|
||||
Status = _SEH_GetExceptionCode();
|
||||
_SEH_YIELD(return Status);
|
||||
}
|
||||
_SEH_END;
|
||||
|
||||
}
|
||||
|
||||
/* No allocation flags */
|
||||
|
@ -2950,6 +2973,7 @@ NtWriteFile(IN HANDLE FileHandle,
|
|||
/* Allocating failed, clean up */
|
||||
IopCleanupAfterException(FileObject, Irp, Event, NULL);
|
||||
Status = _SEH_GetExceptionCode();
|
||||
_SEH_YIELD(return Status);
|
||||
}
|
||||
_SEH_END;
|
||||
|
||||
|
@ -2967,9 +2991,20 @@ NtWriteFile(IN HANDLE FileHandle,
|
|||
/* Check if we have a buffer length */
|
||||
if (Length)
|
||||
{
|
||||
/* Allocate an MDL */
|
||||
Mdl = IoAllocateMdl(Buffer, Length, FALSE, TRUE, Irp);
|
||||
MmProbeAndLockPages(Mdl, PreviousMode, IoReadAccess);
|
||||
_SEH_TRY
|
||||
{
|
||||
/* Allocate an MDL */
|
||||
Mdl = IoAllocateMdl(Buffer, Length, FALSE, TRUE, Irp);
|
||||
MmProbeAndLockPages(Mdl, PreviousMode, IoReadAccess);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
/* Allocating failed, clean up */
|
||||
IopCleanupAfterException(FileObject, Irp, Event, NULL);
|
||||
Status = _SEH_GetExceptionCode();
|
||||
_SEH_YIELD(return Status);
|
||||
}
|
||||
_SEH_END;
|
||||
}
|
||||
|
||||
/* No allocation flags */
|
||||
|
|
Loading…
Reference in a new issue