stack overflow safe kdump ( 2.6.15-rc3-i386) - fault
PATCH 4/4 stack overflow safe kdump ( 2.6.15-rc3-i386) - fault
When we have a bloated stack it is likely that it ends up making an invalid memory access that causes a page fault. Take this case into account in the page fault code.
---
arch/i386/mm/fault.c +13 -1
@@ -245,6 +245,11 @@ fastcall void __kprobes do_page_fault(stlocal_irq_enable (); tsk = current; +/* We may have invalid '*current' due to a stack overflow. */ +if (!virt_addr_valid (tsk)) { +printk ("do_page_fault: Discarding invalid 'current' struct task_struct * = 0x%p\n" , tsk); + tsk =NULL ; + } si_code =SEGV_MAPERR ;
@@ -271,7 +276,14 @@ fastcall void __kprobes do_page_fault(st goto bad_area_nosemaphore; } - mm = tsk->mm; + mm =NULL ; +/* We may have invalid 'tsk' due to a i386 stack overflow */ +if (tsk) + mm = tsk->mm; +if (mm && !virt_addr_valid (mm)) { +printk ("do_page_fault: Discarding invalid current->mm struct mm_struct * = 0x%p\n" , mm); + mm =NULL ; + }/* * If we're in an interrupt, have no user context or are running in an