Author: fireball
Date: Wed Nov 26 12:56:41 2008
New Revision: 37668
URL:
http://svn.reactos.org/svn/reactos?rev=37668&view=rev
Log:
- Fix some coverity errors.
- Use KeBugCheck(MEMORY_MANAGEMENT) instead of ASSERT(FALSE), so it dies on release builds
too.
- Enable support for Hyper-V.
- Fix incorrect gate wait code -- fixes sporadic crashes in the network stack.
- Mark KeBugCheck*, ExRaise* and RtlRaiseStatus as declspec(noreturn), for better
optimization of functions which call them, less potential warnings in the compiler, and,
assuming coverity understands it, less false CIDs.
- Fix KiUpdateDr7, which resulted in broken support for hardware breakpoints.
- Fix failure cases in EnumerateRootDevices which might've freed non-allocated
memory.
- Fix NtAddAtom/NtFindAtom logic when dealing with NULL or kernel Atom names.
Patch by Alex Ionescu.
Modified:
trunk/reactos/include/ddk/winddk.h
trunk/reactos/include/ndk/rtlfuncs.h
trunk/reactos/ntoskrnl/dbgk/dbgkobj.c
trunk/reactos/ntoskrnl/ex/atom.c
trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
trunk/reactos/ntoskrnl/io/iomgr/irp.c
trunk/reactos/ntoskrnl/io/pnpmgr/pnproot.c
trunk/reactos/ntoskrnl/ke/apc.c
trunk/reactos/ntoskrnl/ke/bug.c
trunk/reactos/ntoskrnl/ke/i386/exp.c
trunk/reactos/ntoskrnl/ke/i386/v86m_sup.S
trunk/reactos/ntoskrnl/lpc/send.c
trunk/reactos/ntoskrnl/mm/i386/page.c
trunk/reactos/ntoskrnl/mm/section.c
trunk/reactos/ntoskrnl/ob/obhandle.c
trunk/reactos/ntoskrnl/ob/obname.c
Modified: trunk/reactos/include/ddk/winddk.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/winddk.h?rev=3…
==============================================================================
--- trunk/reactos/include/ddk/winddk.h [iso-8859-1] (original)
+++ trunk/reactos/include/ddk/winddk.h [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -7666,12 +7666,14 @@
NTKERNELAPI
VOID
NTAPI
+__declspec(noreturn)
ExRaiseAccessViolation(
VOID);
NTKERNELAPI
VOID
NTAPI
+__declspec(noreturn)
ExRaiseDatatypeMisalignment(
VOID);
@@ -7679,6 +7681,7 @@
NTKERNELAPI
VOID
NTAPI
+__declspec(noreturn)
ExRaiseStatus(
IN NTSTATUS Status);
@@ -9603,12 +9606,14 @@
NTKERNELAPI
VOID
NTAPI
+__declspec(noreturn)
KeBugCheck(
IN ULONG BugCheckCode);
NTKERNELAPI
VOID
NTAPI
+__declspec(noreturn)
KeBugCheckEx(
IN ULONG BugCheckCode,
IN ULONG_PTR BugCheckParameter1,
Modified: trunk/reactos/include/ndk/rtlfuncs.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/rtlfuncs.h?rev…
==============================================================================
--- trunk/reactos/include/ndk/rtlfuncs.h [iso-8859-1] (original)
+++ trunk/reactos/include/ndk/rtlfuncs.h [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -431,6 +431,7 @@
NTSYSAPI
VOID
NTAPI
+__declspec(noreturn)
RtlRaiseStatus(
IN NTSTATUS Status
);
Modified: trunk/reactos/ntoskrnl/dbgk/dbgkobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/dbgk/dbgkobj.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/dbgk/dbgkobj.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/dbgk/dbgkobj.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -603,7 +603,7 @@
else
{
/* Get the first thread ourselves */
- ThisThread = PsGetNextProcessThread(Process, OldThread);
+ ThisThread = PsGetNextProcessThread(Process, NULL);
IsFirstThread = TRUE;
}
Modified: trunk/reactos/ntoskrnl/ex/atom.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/atom.c?rev=376…
==============================================================================
--- trunk/reactos/ntoskrnl/ex/atom.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ex/atom.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -92,7 +92,7 @@
PRTL_ATOM_TABLE AtomTable = ExpGetGlobalAtomTable();
NTSTATUS Status = STATUS_SUCCESS;
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
- LPWSTR CapturedName = NULL;
+ LPWSTR CapturedName;
ULONG CapturedSize;
RTL_ATOM SafeAtom;
PAGED_CODE();
@@ -107,6 +107,9 @@
DPRINT1("Atom name too long\n");
return STATUS_INVALID_PARAMETER;
}
+
+ /* Re-use the given name if kernel mode or no atom name */
+ CapturedName = AtomName;
/* Check if we're called from user-mode*/
if (PreviousMode != KernelMode)
@@ -147,11 +150,6 @@
Status = _SEH2_GetExceptionCode();
}
_SEH2_END;
- }
- else
- {
- /* Simplify code and re-use one variable */
- if (AtomName) CapturedName = AtomName;
}
/* Make sure probe worked */
@@ -261,6 +259,9 @@
DPRINT1("Atom name too long\n");
return STATUS_INVALID_PARAMETER;
}
+
+ /* Re-use the given name if kernel mode or no atom name */
+ CapturedName = AtomName;
/* Check if we're called from user-mode*/
if (PreviousMode != KernelMode)
@@ -301,11 +302,6 @@
Status = _SEH2_GetExceptionCode();
}
_SEH2_END;
- }
- else
- {
- /* Simplify code and re-use one variable */
- if (AtomName) CapturedName = AtomName;
}
/* Make sure probe worked */
Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] Wed Nov 26
12:56:41 2008
@@ -32,6 +32,21 @@
#define INT_32_DPL0 0x8E00
#define INT_32_DPL3 0xEE00
+//
+// This table contains the prefix flags that are used by V86 emulation
+//
+.equ PREFIX_FLAG_ES, 0x00000100
+.equ PREFIX_FLAG_CS, 0x00000200
+.equ PREFIX_FLAG_SS, 0x00000400
+.equ PREFIX_FLAG_DS, 0x00000800
+.equ PREFIX_FLAG_FS, 0x00001000
+.equ PREFIX_FLAG_GS, 0x00002000
+.equ PREFIX_FLAG_OPER32, 0x00004000
+.equ PREFIX_FLAG_ADDR32, 0x00008000
+.equ PREFIX_FLAG_LOCK, 0x00010000
+.equ PREFIX_FLAG_REPNE, 0x00020000
+.equ PREFIX_FLAG_REP, 0x00040000
+
.intel_syntax noprefix
//
@@ -196,6 +211,23 @@
.endm
//
+// @name GENERATE_PREFIX_HANDLER
+//
+// This macro creates a prefix opcode handler.
+//
+// @param None.
+//
+// @remark None.
+//
+.macro GENERATE_PREFIX_HANDLER Name
+.func Opcode&Name&PrefixV86
+_Opcode&Name&PrefixV86:
+ or ebx, PREFIX_FLAG_&Name
+ jmp _OpcodeGenericPrefixV86
+.endfunc
+.endm
+
+//
// @name INVALID_V86_OPCODE
//
// This macro prints out visible message and hangs the computer.
Modified: trunk/reactos/ntoskrnl/io/iomgr/irp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/irp.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -519,6 +519,8 @@
/* Set Charge Quota Flag */
if (ChargeQuota) Flags |= IRP_QUOTA_CHARGED;
+ /* FIXME: Implement Lookaside Floats */
+
/* Figure out which Lookaside List to use */
if ((StackSize <= 8) && (ChargeQuota == FALSE))
{
@@ -579,9 +581,6 @@
}
else
{
- /* We have an IRP from Lookaside */
- if (ChargeQuota) Flags |= IRP_LOOKASIDE_ALLOCATION;
-
/* In this case there is no charge quota */
Flags &= ~IRP_QUOTA_CHARGED;
}
Modified: trunk/reactos/ntoskrnl/io/pnpmgr/pnproot.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/pnpmgr/pnproot…
==============================================================================
--- trunk/reactos/ntoskrnl/io/pnpmgr/pnproot.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/pnpmgr/pnproot.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -4,7 +4,7 @@
* FILE: ntoskrnl/io/pnpmgr/pnproot.c
* PURPOSE: PnP manager root device
* PROGRAMMERS: Casper S. Hornstrup (chorns(a)users.sourceforge.net)
- * Copyright 2007 Hervé Poussineau (hpoussin(a)reactos.org)
+ * Copyright 2007 Herv? Poussineau (hpoussin(a)reactos.org)
*/
/* INCLUDES ******************************************************************/
@@ -503,8 +503,10 @@
ZwClose(SubKeyHandle);
if (KeyHandle != INVALID_HANDLE_VALUE)
ZwClose(KeyHandle);
- ExFreePoolWithTag(KeyInfo, TAG_PNP_ROOT);
- ExFreePoolWithTag(SubKeyInfo, TAG_PNP_ROOT);
+ if (KeyInfo)
+ ExFreePoolWithTag(KeyInfo, TAG_PNP_ROOT);
+ if (SubKeyInfo)
+ ExFreePoolWithTag(SubKeyInfo, TAG_PNP_ROOT);
KeReleaseGuardedMutex(&DeviceExtension->DeviceListLock);
return Status;
}
Modified: trunk/reactos/ntoskrnl/ke/apc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/apc.c?rev=3766…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/apc.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/apc.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -90,6 +90,7 @@
KPROCESSOR_MODE ApcMode;
PLIST_ENTRY ListHead, NextEntry;
PKAPC QueuedApc;
+ PKGATE Gate;
NTSTATUS Status;
BOOLEAN RequestInterrupt = FALSE;
@@ -211,24 +212,42 @@
}
else if (Thread->State == GateWait)
{
- /* We were in a gate wait. Handle this. */
- DPRINT1("A thread was in a gate wait\n");
-
- /* Lock the gate */
- KiAcquireDispatcherObject(&Thread->GateObject->Header);
-
- /* Remove it from the waiters list */
- RemoveEntryList(&Thread->WaitBlock[0].WaitListEntry);
-
- /* Unlock the gate */
- KiReleaseDispatcherObject(&Thread->GateObject->Header);
-
- /* Increase the queue counter if needed */
- if (Thread->Queue) Thread->Queue->CurrentCount++;
-
- /* Put into deferred ready list with this status */
- Status = STATUS_KERNEL_APC;
- KiInsertDeferredReadyList(Thread);
+ /* Lock the thread */
+ KiAcquireThreadLock(Thread);
+
+ /* Essentially do the same check as above */
+ if ((Thread->State == GateWait) &&
+ (Thread->WaitIrql == PASSIVE_LEVEL) &&
+ !(Thread->SpecialApcDisable) &&
+ (!(Apc->NormalRoutine) ||
+ (!(Thread->KernelApcDisable) &&
+ !(Thread->ApcState.KernelApcInProgress))))
+ {
+ /* We were in a gate wait. Handle this. */
+ DPRINT1("A thread was in a gate wait\n");
+
+ /* Get the gate */
+ Gate = Thread->GateObject;
+
+ /* Lock the gate */
+ KiAcquireDispatcherObject(&Gate->Header);
+
+ /* Remove it from the waiters list */
+ RemoveEntryList(&Thread->WaitBlock[0].WaitListEntry);
+
+ /* Unlock the gate */
+ KiReleaseDispatcherObject(&Gate->Header);
+
+ /* Increase the queue counter if needed */
+ if (Thread->Queue) Thread->Queue->CurrentCount++;
+
+ /* Put into deferred ready list with this status */
+ Status = STATUS_KERNEL_APC;
+ KiInsertDeferredReadyList(Thread);
+ }
+
+ /* Release the thread lock */
+ KiReleaseThreadLock(Thread);
}
}
else if ((Thread->State == Waiting) &&
Modified: trunk/reactos/ntoskrnl/ke/bug.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/bug.c?rev=3766…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/bug.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/bug.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -546,11 +546,13 @@
VOID
NTAPI
+__declspec(noreturn)
KiBugCheckDebugBreak(IN ULONG StatusCode)
{
/* If KDBG isn't connected, freeze the CPU, otherwise, break */
if (KdDebuggerNotPresent) for (;;) KeArchHaltProcessor();
DbgBreakPointWithStatus(StatusCode);
+ while (TRUE);
}
PCHAR
@@ -604,13 +606,9 @@
&InSystem);
if (!ImageBase)
{
- /* Driver wasn't found, check for unloaded driver */
- DriverName = NULL; // FIXME: ROS can't
- if (!DriverName) continue;
-
- /* Convert the driver name */
- ImageBase = (PVOID)Parameters[i];
- ConversionRoutine(DriverName, AnsiName, sizeof(AnsiName));
+ /* FIXME: Add code to check for unloaded drivers */
+ DPRINT1("Potentially unloaded driver!\n");
+ continue;
}
else
{
@@ -751,6 +749,7 @@
VOID
NTAPI
+__declspec(noreturn)
KeBugCheckWithTf(IN ULONG BugCheckCode,
IN ULONG_PTR BugCheckParameter1,
IN ULONG_PTR BugCheckParameter2,
Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/exp.c?rev…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/exp.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/i386/exp.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -124,7 +124,7 @@
NewMask |= DR_MASK(DR7_OVERRIDE_V);
/* Set DR7 override */
- *DrMask |= DR7_OVERRIDE_MASK;
+ *Dr7Ptr |= DR7_OVERRIDE_MASK;
}
else
{
Modified: trunk/reactos/ntoskrnl/ke/i386/v86m_sup.S
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/v86m_sup.…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/v86m_sup.S [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/i386/v86m_sup.S [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -10,6 +10,7 @@
#include <asm.h>
#include <internal/i386/asmmacro.S>
+#undef LOCK
.intel_syntax noprefix
/* FIXME: Can we make a nice macro to generate V86 Opcode handlers? */
@@ -139,45 +140,17 @@
UNHANDLED_V86_OPCODE
.endfunc
-.func OpcodeESPrefixV86
-_OpcodeESPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeCSPrefixV86
-_OpcodeCSPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeSSPrefixV86
-_OpcodeSSPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeDSPrefixV86
-_OpcodeDSPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeFSPrefixV86
-_OpcodeFSPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeGSPrefixV86
-_OpcodeGSPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeOPER32PrefixV86
-_OpcodeOPER32PrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeADDR32PrefixV86
-_OpcodeADDR32PrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
+GENERATE_PREFIX_HANDLER ES
+GENERATE_PREFIX_HANDLER CS
+GENERATE_PREFIX_HANDLER DS
+GENERATE_PREFIX_HANDLER FS
+GENERATE_PREFIX_HANDLER GS
+GENERATE_PREFIX_HANDLER SS
+GENERATE_PREFIX_HANDLER OPER32
+GENERATE_PREFIX_HANDLER ADDR32
+GENERATE_PREFIX_HANDLER LOCK
+GENERATE_PREFIX_HANDLER REP
+GENERATE_PREFIX_HANDLER REPNE
.func OpcodeINSBV86
_OpcodeINSBV86:
@@ -224,7 +197,7 @@
sub dx, 2
/* Check if there is an OPER32 prefix */
- test ebx, 0x4000
+ test ebx, PREFIX_FLAG_OPER32
jnz SkipPrefix
/* Push EFLAGS */
@@ -264,7 +237,7 @@
add edx, 4
/* Check for OPER32 prefix */
- test ebx, 0x4000
+ test ebx, PREFIX_FLAG_OPER32
jnz NoPrefix
/* Skip 2 bytes */
@@ -431,7 +404,7 @@
add ecx, edx
/* Check for OPER32 prefix */
- test ebx, 0x4000
+ test ebx, PREFIX_FLAG_OPER32
jnz Iret32
/* Get flat IP */
@@ -576,21 +549,6 @@
UNHANDLED_V86_OPCODE
.endfunc
-.func OpcodeLOCKPrefixV86
-_OpcodeLOCKPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeREPNEPrefixV86
-_OpcodeREPNEPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
-.func OpcodeREPPrefixV86
-_OpcodeREPPrefixV86:
- UNHANDLED_V86_OPCODE
-.endfunc
-
.func OpcodeCLIV86
_OpcodeCLIV86:
@@ -631,6 +589,23 @@
/* Return success */
mov eax, 1
ret
+.endfunc
+
+.func OpcodeGenericPrefixV86
+_OpcodeGenericPrefixV86:
+
+ /* Skip instruction */
+ inc esi
+ inc edi
+
+ /* Get the instruction */
+ movzx ecx, byte ptr [esi]
+
+ /* Get the opcode index */
+ movzx edx, byte ptr OpcodeIndex[ecx]
+
+ /* Dispatch it */
+ jmp OpcodeDispatchV86[edx*4]
.endfunc
.func OpcodeHLTV86
Modified: trunk/reactos/ntoskrnl/lpc/send.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/send.c?rev=37…
==============================================================================
--- trunk/reactos/ntoskrnl/lpc/send.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/lpc/send.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -256,6 +256,7 @@
/* FIXME: TODO */
Semaphore = NULL; // we'd use the Thread Semaphore here
ASSERT(FALSE);
+ return STATUS_NOT_IMPLEMENTED;
}
else
{
Modified: trunk/reactos/ntoskrnl/mm/i386/page.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/i386/page.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/i386/page.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/i386/page.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -97,7 +97,7 @@
else
{
DPRINT1("Unknown main protection type.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (flProtect & PAGE_SYSTEM)
@@ -241,7 +241,7 @@
if (Address >= MmSystemRangeStart)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
// MmGlobalKernelPageDirectory[ADDR_TO_PDE_OFFSET(Address)] = 0;
}
if (Process != NULL && Process != CurrentProcess)
@@ -264,7 +264,7 @@
PageDir =
MmCreateHyperspaceMapping(PTE_TO_PFN(Process->Pcb.DirectoryTableBase[0]));
if (PageDir == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (0 == InterlockedCompareExchangePte(&PageDir[PdeOffset], 0, 0))
{
@@ -276,7 +276,7 @@
Status = MmRequestPageMemoryConsumer(MC_NPPOOL, FALSE, &Pfn);
if (!NT_SUCCESS(Status) || Pfn == 0)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Entry = InterlockedCompareExchangePte(&PageDir[PdeOffset],
PFN_TO_PTE(Pfn) | PA_PRESENT | PA_READWRITE | PA_USER, 0);
if (Entry != 0)
@@ -293,7 +293,7 @@
Pt = MmCreateHyperspaceMapping(Pfn);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
return Pt + ADDR_TO_PTE_OFFSET(Address);
}
@@ -311,7 +311,7 @@
Status = MmRequestPageMemoryConsumer(MC_NPPOOL, FALSE, &Pfn);
if (!NT_SUCCESS(Status) || Pfn == 0)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Entry = PFN_TO_PTE(Pfn) | PA_PRESENT | PA_READWRITE;
if (Ke386GlobalPagesEnabled)
@@ -334,7 +334,7 @@
Status = MmRequestPageMemoryConsumer(MC_NPPOOL, FALSE, &Pfn);
if (!NT_SUCCESS(Status) || Pfn == 0)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Entry = InterlockedCompareExchangePte(PageDir, PFN_TO_PTE(Pfn) | PA_PRESENT |
PA_READWRITE | PA_USER, 0);
if (Entry != 0)
@@ -403,7 +403,7 @@
Pt = MmGetPageTableForProcess(Process, Address, FALSE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
* Atomically disable the present bit and get the old value.
@@ -417,7 +417,7 @@
WasValid = (PAGE_MASK(Pte) != 0);
if (!WasValid)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -582,14 +582,14 @@
if (Address < MmSystemRangeStart && Process == NULL)
{
DPRINT1("MmSetCleanPage is called for user space without a
process.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Pt = MmGetPageTableForProcess(Process, Address, FALSE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
do
@@ -617,13 +617,13 @@
if (Address < MmSystemRangeStart && Process == NULL)
{
DPRINT1("MmSetDirtyPage is called for user space without a
process.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Pt = MmGetPageTableForProcess(Process, Address, FALSE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
do
@@ -650,7 +650,7 @@
Pt = MmGetPageTableForProcess(Process, Address, FALSE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
do
@@ -704,7 +704,7 @@
if (Address < MmSystemRangeStart)
{
DPRINT1("MmCreateVirtualMappingForKernel is called for user space\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Attributes = ProtectToPTE(flProtect);
@@ -724,7 +724,7 @@
Pt = MmGetPageTableForProcess(NULL, Addr, TRUE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Pt--;
@@ -735,7 +735,7 @@
DPRINT1("Setting physical address but not allowing access at address
"
"0x%.8X with attributes %x/%x.\n",
Addr, Attributes, flProtect);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
PdeOffset = ADDR_TO_PDE_OFFSET(Addr);
@@ -744,7 +744,7 @@
Pt = MmGetPageTableForProcess(NULL, Addr, TRUE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
else
@@ -756,7 +756,7 @@
Pte = *Pt;
if (Pte != 0)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
InterlockedExchangePte(Pt, PFN_TO_PTE(Pages[i]) | Attributes);
}
@@ -776,22 +776,22 @@
if (Process == NULL && Address < MmSystemRangeStart)
{
DPRINT1("No process\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (Process != NULL && Address >= MmSystemRangeStart)
{
DPRINT1("Setting kernel address with process context\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (SwapEntry & (1 << 31))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Pt = MmGetPageTableForProcess(Process, Address, TRUE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Pte = *Pt;
if (PAGE_MASK((Pte)) != 0)
@@ -836,13 +836,13 @@
if (Address < MmSystemRangeStart)
{
DPRINT1("No process\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (PageCount > 0x10000 ||
(ULONG_PTR) Address / PAGE_SIZE + PageCount > 0x100000)
{
DPRINT1("Page count to large\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
else
@@ -850,14 +850,14 @@
if (Address >= MmSystemRangeStart)
{
DPRINT1("Setting kernel address with process context\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (PageCount > (ULONG_PTR)MmSystemRangeStart / PAGE_SIZE ||
(ULONG_PTR) Address / PAGE_SIZE + PageCount >
(ULONG_PTR)MmSystemRangeStart / PAGE_SIZE)
{
DPRINT1("Page Count to large\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
@@ -889,7 +889,7 @@
DPRINT1("Setting physical address but not allowing access at address
"
"0x%.8X with attributes %x/%x.\n",
Addr, Attributes, flProtect);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
PdeOffset = ADDR_TO_PDE_OFFSET(Addr);
if (oldPdeOffset != PdeOffset)
@@ -898,7 +898,7 @@
Pt = MmGetPageTableForProcess(Process, Addr, TRUE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
else
@@ -911,7 +911,7 @@
MmMarkPageMapped(Pages[i]);
if (PAGE_MASK((Pte)) != 0 && !((Pte) & PA_PRESENT))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (PAGE_MASK((Pte)) != 0)
{
@@ -950,7 +950,7 @@
if (!MmIsPageInUse(Pages[i]))
{
DPRINT1("Page at address %x not in use\n", PFN_TO_PTE(Pages[i]));
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
@@ -1035,7 +1035,7 @@
Pt = MmGetPageTableForProcess(Process, Address, FALSE);
if (Pt == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
InterlockedExchangePte(Pt, PAGE_MASK(*Pt) | Attributes | (*Pt &
(PA_ACCESSED|PA_DIRTY)));
MiFlushTlb(Pt, Address);
@@ -1099,7 +1099,7 @@
}
if (i >= Page % 1024)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
}
@@ -1124,7 +1124,7 @@
}
if (i <= Page % 1024)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
}
@@ -1158,7 +1158,7 @@
if (Address < MmSystemRangeStart)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
StartOffset = ADDR_TO_PDE_OFFSET(Address);
@@ -1237,7 +1237,7 @@
BoundaryAddressMultiple);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
BaseAddress = (PVOID)HYPERSPACE;
Status = MmCreateMemoryArea(MmGetKernelAddressSpace(),
@@ -1251,7 +1251,7 @@
BoundaryAddressMultiple);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
Modified: trunk/reactos/ntoskrnl/mm/section.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/section.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/section.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/section.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -291,7 +291,7 @@
{
DPRINT1("Image segment %d still referenced (was %d)\n", i,
SectionSegments[i].ReferenceCount);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmFreePageTablesSectionSegment(&SectionSegments[i]);
}
@@ -309,7 +309,7 @@
if (Segment->ReferenceCount != 0)
{
DPRINT1("Data segment still referenced\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmFreePageTablesSectionSegment(Segment);
ExFreePool(Segment);
@@ -357,7 +357,7 @@
TAG_SECTION_PAGE_TABLE);
if (Table == NULL)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
memset(Table, 0, sizeof(SECTION_PAGE_TABLE));
DPRINT("Table %x\n", Table);
@@ -410,16 +410,16 @@
if (Entry == 0)
{
DPRINT1("Entry == 0 for MmSharePageEntrySectionSegment\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (SHARE_COUNT_FROM_SSE(Entry) == MAX_SHARE_COUNT)
{
DPRINT1("Maximum share count reached\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (IS_SWAP_FROM_SSE(Entry))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Entry = MAKE_SSE(PAGE_FROM_SSE(Entry), SHARE_COUNT_FROM_SSE(Entry) + 1);
MmSetPageEntrySectionSegment(Segment, Offset, Entry);
@@ -440,16 +440,16 @@
if (Entry == 0)
{
DPRINT1("Entry == 0 for MmUnsharePageEntrySectionSegment\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (SHARE_COUNT_FROM_SSE(Entry) == 0)
{
DPRINT1("Zero share count for unshare\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (IS_SWAP_FROM_SSE(Entry))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Entry = MAKE_SSE(PAGE_FROM_SSE(Entry), SHARE_COUNT_FROM_SSE(Entry) - 1);
/*
@@ -485,7 +485,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("CcRosUnmapCacheSegment failed, status = %x\n",
Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
}
@@ -534,7 +534,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("MM: Failed to write to swap page (Status was
0x%.8X)\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
MmSetPageEntrySectionSegment(Segment, Offset,
MAKE_SWAP_SSE(SavedSwapEntry));
@@ -545,7 +545,7 @@
else
{
DPRINT1("Found a swapentry for a non private page in an image or data
file sgment\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
}
@@ -816,7 +816,7 @@
if (PageOp == NULL)
{
DPRINT1("MmGetPageOp failed\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -834,12 +834,12 @@
if (Status != STATUS_SUCCESS)
{
DPRINT1("Failed to wait for page op, status = %x\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (PageOp->Status == STATUS_PENDING)
{
DPRINT1("Woke for page op before completion\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmLockAddressSpace(AddressSpace);
/*
@@ -897,7 +897,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("Unable to create virtual mapping\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmInsertRmap(Page, Process, (PVOID)PAddress);
}
@@ -926,7 +926,7 @@
if (Segment->Flags & MM_PAGEFILE_SEGMENT)
{
DPRINT1("Found a swaped out private page in a pagefile section.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmUnlockSectionSegment(Segment);
@@ -936,14 +936,14 @@
Status = MmRequestPageMemoryConsumer(MC_USER, TRUE, &Page);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Status = MmReadFromSwapPage(SwapEntry, Page);
if (!NT_SUCCESS(Status))
{
DPRINT1("MmReadFromSwapPage failed, status = %x\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmLockAddressSpace(AddressSpace);
Status = MmCreateVirtualMapping(Process,
@@ -954,7 +954,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT("MmCreateVirtualMapping failed, not out of memory\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
return(Status);
}
@@ -999,7 +999,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT("MmCreateVirtualMappingUnsafe failed, not out of memory\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
return(Status);
}
/*
@@ -1035,7 +1035,7 @@
}
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Status = MmCreateVirtualMapping(Process,
Address,
@@ -1045,7 +1045,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT("MmCreateVirtualMapping failed, not out of memory\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
return(Status);
}
MmInsertRmap(Page, Process, (PVOID)PAddress);
@@ -1126,7 +1126,7 @@
if (Entry != Entry1)
{
DPRINT1("Someone changed ppte entry while we slept\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1145,7 +1145,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("Unable to create virtual mapping\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmInsertRmap(Page, Process, (PVOID)PAddress);
@@ -1174,13 +1174,13 @@
Status = MmRequestPageMemoryConsumer(MC_USER, TRUE, &Page);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Status = MmReadFromSwapPage(SwapEntry, Page);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1197,7 +1197,7 @@
if (Entry != Entry1)
{
DPRINT1("Someone changed ppte entry while we slept\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1220,7 +1220,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("Unable to create virtual mapping\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmInsertRmap(Page, Process, (PVOID)PAddress);
if (Locked)
@@ -1252,7 +1252,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("Unable to create virtual mapping\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmInsertRmap(Page, Process, (PVOID)PAddress);
if (Locked)
@@ -1346,7 +1346,7 @@
if (PageOp == NULL)
{
DPRINT1("MmGetPageOp failed\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1362,12 +1362,12 @@
if (Status == STATUS_TIMEOUT)
{
DPRINT1("Failed to wait for page op, status = %x\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (PageOp->Status == STATUS_PENDING)
{
DPRINT1("Woke for page op before completion\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
* Restart the operation
@@ -1389,7 +1389,7 @@
Status = MmRequestPageMemoryConsumer(MC_USER, TRUE, &NewPage);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1414,13 +1414,13 @@
if (!NT_SUCCESS(Status))
{
DPRINT("MmCreateVirtualMapping failed, not out of memory\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
return(Status);
}
if (!NT_SUCCESS(Status))
{
DPRINT1("Unable to create virtual mapping\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (Locked)
{
@@ -1550,7 +1550,7 @@
DPRINT1("Trying to page out from physical memory section address 0x%X "
"process %d\n", Address,
Process ? Process->UniqueProcessId : 0);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1561,7 +1561,7 @@
{
DPRINT1("Trying to page out not-present page at (%d,0x%.8X).\n",
Process ? Process->UniqueProcessId : 0, Address);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Page = MmGetPfnForProcess(Process, Address);
SwapEntry = MmGetSavedSwapEntryPage(Page);
@@ -1589,7 +1589,7 @@
if(!MiIsPageFromCache(MemoryArea, Context.Offset))
{
DPRINT1("Direct mapped non private page is not associated with the
cache.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
else
@@ -1608,7 +1608,7 @@
if (!(Context.Segment->Flags & MM_PAGEFILE_SEGMENT) &&
!(Context.Segment->Characteristics & IMAGE_SCN_MEM_SHARED))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
@@ -1626,7 +1626,7 @@
{
DPRINT1("Found a %s private page (address %x) in a pagefile
segment.\n",
Context.WasDirty ? "dirty" : "clean", Address);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (!Context.WasDirty && SwapEntry != 0)
{
@@ -1644,7 +1644,7 @@
{
DPRINT1("Found a %s private page (address %x) in a shared section
segment.\n",
Context.WasDirty ? "dirty" : "clean", Address);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
if (!Context.WasDirty || SwapEntry != 0)
{
@@ -1665,13 +1665,13 @@
{
DPRINT1("Found a swapentry for a non private and direct mapped page
(address %x)\n",
Address);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Status = CcRosUnmapCacheSegment(Bcb, FileOffset, FALSE);
if (!NT_SUCCESS(Status))
{
DPRINT1("CCRosUnmapCacheSegment failed, status = %x\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
PageOp->Status = STATUS_SUCCESS;
MmspCompleteAndReleasePageOp(PageOp);
@@ -1683,7 +1683,7 @@
{
DPRINT1("Found a swap entry for a non dirty, non private and not direct
mapped page (address %x)\n",
Address);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmReleasePageMemoryConsumer(MC_USER, Page);
PageOp->Status = STATUS_SUCCESS;
@@ -1700,7 +1700,7 @@
MmUnlockAddressSpace(AddressSpace);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmReleasePageMemoryConsumer(MC_USER, Page);
PageOp->Status = STATUS_SUCCESS;
@@ -1828,7 +1828,7 @@
MmUnlockAddressSpace(AddressSpace);
if (!NT_SUCCESS(Status))
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
else
@@ -1903,7 +1903,7 @@
DPRINT1("Trying to write back page from physical memory mapped at %X "
"process %d\n", Address,
Process ? Process->UniqueProcessId : 0);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
@@ -1914,7 +1914,7 @@
{
DPRINT1("Trying to page out not-present page at (%d,0x%.8X).\n",
Process ? Process->UniqueProcessId : 0, Address);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Page = MmGetPfnForProcess(Process, Address);
SwapEntry = MmGetSavedSwapEntryPage(Page);
@@ -2282,7 +2282,7 @@
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to create PhysicalMemory section\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
Status = ObInsertObject(PhysSection,
NULL,
@@ -2723,7 +2723,7 @@
if(Length == 0)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
FileOffset = *Offset;
@@ -2731,7 +2731,7 @@
/* Negative/special offset: it cannot be used in this context */
if(FileOffset.u.HighPart < 0)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
AdjustOffset = PAGE_ROUND_DOWN(FileOffset.u.LowPart);
@@ -3134,7 +3134,7 @@
*/
else
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
}
}
@@ -3903,7 +3903,7 @@
if (Status != STATUS_SUCCESS)
{
DPRINT1("Failed to wait for page op, status = %x\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmLockAddressSpace(AddressSpace);
@@ -3937,7 +3937,7 @@
if (Segment->Flags & MM_PAGEFILE_SEGMENT)
{
DPRINT1("Found a swap entry for a page in a pagefile section.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmFreeSwapPage(SwapEntry);
}
@@ -3952,7 +3952,7 @@
if (Segment->Flags & MM_PAGEFILE_SEGMENT)
{
DPRINT1("Found a private page in a pagefile section.\n");
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
/*
* Just dereference private pages
@@ -4078,7 +4078,7 @@
if (Status != STATUS_SUCCESS)
{
DPRINT1("Failed to wait for page op, status = %x\n", Status);
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
MmLockAddressSpace(AddressSpace);
MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace,
@@ -4124,7 +4124,7 @@
}
if (i >= NrSegments)
{
- ASSERT(FALSE);
+ KeBugCheck(MEMORY_MANAGEMENT);
}
for (i = 0; i < NrSegments; i++)
Modified: trunk/reactos/ntoskrnl/ob/obhandle.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obhandle.c?rev…
==============================================================================
--- trunk/reactos/ntoskrnl/ob/obhandle.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ob/obhandle.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -763,7 +763,7 @@
NTSTATUS
NTAPI
ObpIncrementHandleCount(IN PVOID Object,
- IN PACCESS_STATE AccessState,
+ IN PACCESS_STATE AccessState OPTIONAL,
IN KPROCESSOR_MODE AccessMode,
IN ULONG HandleAttributes,
IN PEPROCESS Process,
Modified: trunk/reactos/ntoskrnl/ob/obname.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obname.c?rev=3…
==============================================================================
--- trunk/reactos/ntoskrnl/ob/obname.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ob/obname.c [iso-8859-1] Wed Nov 26 12:56:41 2008
@@ -497,13 +497,8 @@
else
{
ParseFromRoot:
- /* Check if we have a device map */
- if (DeviceMap)
- {
- /* Dereference it */
- //ObfDereferenceDeviceMap(DeviceMap);
- DeviceMap = NULL;
- }
+ /* FIXME: Check if we have a device map */
+ ASSERT(DeviceMap == NULL);
/* Check if this is a possible DOS name */
if (!((ULONG_PTR)(ObjectName->Buffer) & 7))