static void mprotect_kernel_mem(int w) { unsigned long start, end; int pages; if(!jail || (current == &init_task)) return; pages = (1 << CONFIG_KERNEL_STACK_ORDER); start = (unsigned long) current_thread + PAGE_SIZE; end = (unsigned long) current_thread + PAGE_SIZE * pages; protect_memory(uml_reserved, start - uml_reserved, 1, w, 1, 1); protect_memory(end, high_physmem - end, 1, w, 1, 1); start = (unsigned long) UML_ROUND_DOWN(&_stext); end = (unsigned long) UML_ROUND_UP(&_etext); protect_memory(start, end - start, 1, w, 1, 1); start = (unsigned long) UML_ROUND_DOWN(&_unprotected_end); end = (unsigned long) UML_ROUND_UP(&_edata); protect_memory(start, end - start, 1, w, 1, 1); start = (unsigned long) UML_ROUND_DOWN(&__bss_start); end = (unsigned long) UML_ROUND_UP(brk_start); protect_memory(start, end - start, 1, w, 1, 1); mprotect_kernel_vm(w); }
void before_mem_tt(unsigned long brk_start) { if(debug) remap_data(UML_ROUND_DOWN(&_stext), UML_ROUND_UP(&_etext), 1); remap_data(UML_ROUND_DOWN(&_sdata), UML_ROUND_UP(&_edata), 1); remap_data(UML_ROUND_DOWN(&__bss_start), UML_ROUND_UP(&_end), 1); }