Trying to reduce the ability for a fork bomb to fault the kernel
[tpg/acess2.git] / Kernel / arch / x86 / proc.c
index 16af0da..7596212 100644 (file)
@@ -48,7 +48,7 @@ extern int    giNextTID;
 extern tThread gThreadZero;
 extern tThread *Threads_CloneTCB(Uint *Err, Uint Flags);
 extern void    Isr8(void);     // Double Fault
-extern void    Proc_ReturnToUser(void);
+extern void    Proc_ReturnToUser(tVAddr Handler, Uint Argument);
 
 // === PROTOTYPES ===
 void   ArchThreads_Init(void);
@@ -570,7 +570,11 @@ int Proc_Clone(Uint *Err, Uint Flags)
                Uint    tmpEbp, oldEsp = esp;
 
                // Set CR3
+               #if USE_PAE
+               # warning "PAE Unimplemented"
+               #else
                newThread->MemState.CR3 = cur->MemState.CR3;
+               #endif
 
                // Create new KStack
                newThread->KernelStack = MM_NewKStack();
@@ -606,7 +610,7 @@ int Proc_Clone(Uint *Err, Uint Flags)
                __asm__ __volatile__ ("mov %0, %%db0" : : "r" (newThread) );
                #if USE_MP
                // ACK the interrupt
-               if(GetCPUNum())
+               if( GetCPUNum() )
                        gpMP_LocalAPIC->EOI.Val = 0;
                else
                #endif
@@ -829,7 +833,7 @@ void Proc_CallFaultHandler(tThread *Thread)
 {
        // Rewinds the stack and calls the user function
        // Never returns
-       __asm__ __volatile__ ("mov %0, %%ebp;\n\tcall Proc_ReturnToUser" :: "r"(Thread->FaultHandler));
+       Proc_ReturnToUser( Thread->FaultHandler, Thread->CurFaultNum );
        for(;;);
 }
 

UCC git Repository :: git.ucc.asn.au