• Andrew Morton's avatar
    [PATCH] exit_mmap() TASK_SIZE fix · b5c38535
    Andrew Morton authored
    exit_mmap() currently assumes that the exitting task used virtual address
    span TASK_SIZE.
    
    But on some platforms, TASK_SIZE is variable, based on current->mm.
    
    But exit_mmap() can be called from (say) procfs's call to mmput.  In which
    case current->mm has nothing to do with the mm which is being put in
    mmput().
    
    So rather than assuming that the mm which is being put is current->mm, we
    need to calculate the virtual span of the mm.  Add a new per-arch macro
    MM_VM_SIZE() for that.
    
    Some platforms can currently go BUG over this (where?).  sparc64 is safe
    because our TASK_SIZE is constant.
    
    Platforms such as ia64 should stick the VM extent inside of mm_struct, I'd
    suggest adding it to mm_context_t.
    
    1) TASK_SIZE means what is valid for mmap()'s in the processes
       address space
    
    2) MM_VM_SIZE means where things might be mapped for a MM, including
       private implementation-specific areas created by the kernel
       which the user cannot access
    b5c38535
mm.h 20.4 KB