• V
    fork/exec: cleanup mm initialization · 41f727fd
    Vladimir Davydov 提交于
    mm initialization on fork/exec is spread all over the place, which makes
    the code look inconsistent.
    
    We have mm_init(), which is supposed to init/nullify mm's internals, but
    it doesn't init all the fields it should:
    
     - on fork ->mmap,mm_rb,vmacache_seqnum,map_count,mm_cpumask,locked_vm
       are zeroed in dup_mmap();
    
     - on fork ->pmd_huge_pte is zeroed in dup_mm(), immediately before
       calling mm_init();
    
     - ->cpu_vm_mask_var ptr is initialized by mm_init_cpumask(), which is
       called before mm_init() on both fork and exec;
    
     - ->context is initialized by init_new_context(), which is called after
       mm_init() on both fork and exec;
    
    Let's consolidate all the initializations in mm_init() to make the code
    look cleaner.
    Signed-off-by: NVladimir Davydov <vdavydov@parallels.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Christoph Lameter <cl@linux.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    41f727fd
fork.c 47.2 KB