• V
    fork: reset mm->pinned_vm · ce65cefa
    Vladimir Davydov 提交于
    mm->pinned_vm counts pages of mm's address space that were permanently
    pinned in memory by increasing their reference counter. The counter was
    introduced by commit bc3e53f6 ("mm: distinguish between mlocked and
    pinned pages"), while before it locked_vm had been used for such pages.
    
    Obviously, we should reset the counter on fork if !CLONE_VM, just like
    we do with locked_vm, but currently we don't. Let's fix it.
    
    This patch will fix the contents of /proc/pid/status:VmPin.
    
    ib_umem_get[infiniband] and perf_mmap still check pinned_vm against
    RLIMIT_MEMLOCK.  It's left from the times when pinned pages were accounted
    under locked_vm, but today it looks wrong.  It isn't clear how we should
    deal with it.
    
    We still have some drivers accounting pinned pages under mm->locked_vm -
    this is what commit bc3e53f6 was fighting against.  It's
    infiniband/usnic and vfio.
    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>
    Cc: Roland Dreier <roland@kernel.org>
    Cc: Sean Hefty <sean.hefty@intel.com>
    Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    ce65cefa
fork.c 47.2 KB