ring 0 Linux


         

load_elf_library,


, mmap_sem do_brk() , . , sys_brk(), , do_brk() . , mm/mmap.c:

[1094] vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
if (!vma) return -ENOMEM; vma->
vm_mm = mm; vma->
vm_start = addr; vma->
vm_end = addr + len; vma->
vm_flags = flags; vma->
vm_page_prot = protection_map[flags & 0x0f]; vma->
vm_ops = NULL; vma->
vm_pgoff = 0; vma->
vm_file = NULL; vma->
vm_private_data = NULL; vma_link(mm, vma, prev, rb_link, rb_parent);