From 7c5e1d1b2948c1341e8c4ecb37232abe6d7c9dc0 Mon Sep 17 00:00:00 2001 From: Ben Gras Date: Tue, 11 May 2010 15:14:10 +0000 Subject: [PATCH] kernel - don't print info about scheduled process if pagefault happened in kernel. --- kernel/arch/i386/exception.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/kernel/arch/i386/exception.c b/kernel/arch/i386/exception.c index 613120eba..dd16cccb8 100644 --- a/kernel/arch/i386/exception.c +++ b/kernel/arch/i386/exception.c @@ -51,15 +51,19 @@ PRIVATE void pagefault( struct proc *pr, pr->p_reg.pc = (reg_t) phys_copy_fault; pr->p_reg.retreg = pagefaultcr2; } - + return; } + if(is_nested) { + panic("pagefault in kernel at address 0x%lx", pagefaultcr2); + } + /* System processes that don't have their own page table can't * have page faults. VM does have its own page table but also * can't have page faults (because VM has to handle them). */ - if(is_nested || (pr->p_endpoint <= INIT_PROC_NR && + if((pr->p_endpoint <= INIT_PROC_NR && !(pr->p_misc_flags & MF_FULLVM)) || pr->p_endpoint == VM_PROC_NR) { /* Page fault we can't / don't want to * handle. @@ -70,7 +74,7 @@ PRIVATE void pagefault( struct proc *pr, proc_stacktrace(pr); printf("pc of pagefault: 0x%lx\n", frame->eip); panic("page fault in system process: %d", pr->p_endpoint); - + return; } -- 2.44.0