- Make use of _SEH2_YIELD in Mm

svn path=/trunk/; revision=42929
This commit is contained in:
Stefan Ginsberg
2009-08-24 20:39:23 +00:00
parent 0811de4790
commit 9b25f7a883
4 changed files with 38 additions and 83 deletions
+6 -8
View File
@@ -659,9 +659,8 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
/* Get the exception code */
Status = _SEH2_GetExceptionCode();
_SEH2_YIELD(return Status);
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
@@ -949,7 +948,7 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle,
*/
{
MEMORY_AREA* MemoryArea;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
PEPROCESS Process;
PMMSUPPORT AddressSpace;
PVOID BaseAddress;
@@ -967,7 +966,7 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle,
return STATUS_INVALID_PARAMETER_4;
}
if(ExGetPreviousMode() != KernelMode)
if (ExGetPreviousMode() != KernelMode)
{
_SEH2_TRY
{
@@ -977,11 +976,10 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
/* Get exception code */
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if (!NT_SUCCESS(Status)) return Status;
}
BaseAddress = (PVOID)PAGE_ROUND_DOWN((*PBaseAddress));
+3 -7
View File
@@ -519,7 +519,7 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName,
IN PLARGE_INTEGER MaximumSize,
IN ULONG Reserved)
{
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE FileHandle;
IO_STATUS_BLOCK IoStatus;
@@ -560,14 +560,10 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if (!NT_SUCCESS(Status))
{
return Status;
}
}
else
{
+13 -29
View File
@@ -3496,7 +3496,7 @@ NtCreateSection (OUT PHANDLE SectionHandle,
LARGE_INTEGER SafeMaximumSize;
PVOID SectionObject;
KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
PreviousMode = ExGetPreviousMode();
@@ -3514,14 +3514,10 @@ NtCreateSection (OUT PHANDLE SectionHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if(!NT_SUCCESS(Status))
{
return Status;
}
}
Status = MmCreateSection(&SectionObject,
@@ -3570,7 +3566,7 @@ NtOpenSection(PHANDLE SectionHandle,
{
HANDLE hSection;
KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
PreviousMode = ExGetPreviousMode();
@@ -3582,14 +3578,10 @@ NtOpenSection(PHANDLE SectionHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if(!NT_SUCCESS(Status))
{
return Status;
}
}
Status = ObOpenObjectByName(ObjectAttributes,
@@ -3729,7 +3721,7 @@ NtMapViewOfSection(IN HANDLE SectionHandle,
PEPROCESS Process;
KPROCESSOR_MODE PreviousMode;
PMMSUPPORT AddressSpace;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
ULONG tmpProtect;
ACCESS_MASK DesiredAccess;
@@ -3779,14 +3771,10 @@ NtMapViewOfSection(IN HANDLE SectionHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if(!NT_SUCCESS(Status))
{
return Status;
}
}
else
{
@@ -4263,7 +4251,7 @@ NtQuerySection(IN HANDLE SectionHandle,
{
PROS_SECTION_OBJECT Section;
KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
PAGED_CODE();
PreviousMode = ExGetPreviousMode();
@@ -4392,7 +4380,7 @@ NtExtendSection(IN HANDLE SectionHandle,
LARGE_INTEGER SafeNewMaximumSize;
PROS_SECTION_OBJECT Section;
KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
PreviousMode = ExGetPreviousMode();
@@ -4406,14 +4394,10 @@ NtExtendSection(IN HANDLE SectionHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if(!NT_SUCCESS(Status))
{
return Status;
}
}
Status = ObReferenceObjectByHandle(SectionHandle,
+16 -39
View File
@@ -70,7 +70,6 @@ MiDoMappedCopy(IN PEPROCESS SourceProcess,
KAPC_STATE ApcState;
BOOLEAN HaveBadAddress;
ULONG_PTR BadAddress;
NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
/* Calculate the maximum amount of data to move */
@@ -165,8 +164,7 @@ MiDoMappedCopy(IN PEPROCESS SourceProcess,
if ((FailedInProbe) || (FailedInMapping))
{
/* Exit */
Status = _SEH2_GetExceptionCode();
_SEH2_YIELD(return Status);
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
/* Otherwise, we failed probably during the move */
@@ -182,13 +180,10 @@ MiDoMappedCopy(IN PEPROCESS SourceProcess,
}
/* Return partial copy */
Status = STATUS_PARTIAL_COPY;
_SEH2_YIELD(return STATUS_PARTIAL_COPY);
}
_SEH2_END;
/* Check for SEH status */
if (Status != STATUS_SUCCESS) return Status;
/* Detach from target */
KeUnstackDetachProcess(&ApcState);
@@ -225,7 +220,6 @@ MiDoPoolCopy(IN PEPROCESS SourceProcess,
KAPC_STATE ApcState;
BOOLEAN HaveBadAddress;
ULONG_PTR BadAddress;
NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
/* Calculate the maximum amount of data to move */
@@ -313,8 +307,7 @@ MiDoPoolCopy(IN PEPROCESS SourceProcess,
if (FailedInProbe)
{
/* Exit */
Status = _SEH2_GetExceptionCode();
_SEH2_YIELD(return Status);
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
/* Otherwise, we failed probably during the move */
@@ -330,13 +323,10 @@ MiDoPoolCopy(IN PEPROCESS SourceProcess,
}
/* Return partial copy */
Status = STATUS_PARTIAL_COPY;
_SEH2_YIELD(return STATUS_PARTIAL_COPY);
}
_SEH2_END;
/* Check for SEH status */
if (Status != STATUS_SUCCESS) return Status;
/* Detach from target */
KeUnstackDetachProcess(&ApcState);
@@ -779,7 +769,7 @@ NtReadVirtualMemory(IN HANDLE ProcessHandle,
{
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
PEPROCESS Process;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
SIZE_T BytesRead = 0;
PAGED_CODE();
@@ -804,13 +794,10 @@ NtReadVirtualMemory(IN HANDLE ProcessHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
/* Get exception code */
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
/* Return if we failed */
if (!NT_SUCCESS(Status)) return Status;
}
/* Reference the process */
@@ -866,7 +853,7 @@ NtWriteVirtualMemory(IN HANDLE ProcessHandle,
{
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
PEPROCESS Process;
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
ULONG BytesWritten = 0;
PAGED_CODE();
@@ -891,13 +878,10 @@ NtWriteVirtualMemory(IN HANDLE ProcessHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
/* Get exception code */
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
/* Return if we failed */
if (!NT_SUCCESS(Status)) return Status;
}
/* Reference the process */
@@ -957,7 +941,7 @@ NtProtectVirtualMemory(IN HANDLE ProcessHandle,
PVOID BaseAddress = NULL;
SIZE_T NumberOfBytesToProtect = 0;
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
PAGED_CODE();
/* Check for valid protection flags */
@@ -991,13 +975,10 @@ NtProtectVirtualMemory(IN HANDLE ProcessHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
/* Get exception code */
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
/* Return on exception */
if (!NT_SUCCESS(Status)) return Status;
}
else
{
@@ -1065,7 +1046,7 @@ NtQueryVirtualMemory(IN HANDLE ProcessHandle,
IN SIZE_T Length,
OUT PSIZE_T UnsafeResultLength)
{
NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status;
SIZE_T ResultLength = 0;
KPROCESSOR_MODE PreviousMode;
WCHAR ModuleFileNameBuffer[MAX_PATH] = {0};
@@ -1098,14 +1079,10 @@ NtQueryVirtualMemory(IN HANDLE ProcessHandle,
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
Status = _SEH2_GetExceptionCode();
/* Return the exception code */
_SEH2_YIELD(return _SEH2_GetExceptionCode());
}
_SEH2_END;
if (!NT_SUCCESS(Status))
{
return Status;
}
}
if (Address >= MmSystemRangeStart)