On Thu, Jun 19, 2014 at 01:58:20PM -0700, Andrew Morton wrote: > On Thu, 19 Jun 2014 13:07:47 +0400 Vladimir Davydov <vdavydov@xxxxxxxxxxxxx> wrote: > > > 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 bc3e53f682d9 ("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. > > > > ... > > > > --- a/kernel/fork.c > > +++ b/kernel/fork.c > > @@ -534,6 +534,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) > > atomic_long_set(&mm->nr_ptes, 0); > > mm->map_count = 0; > > mm->locked_vm = 0; > > + mm->pinned_vm = 0; > > memset(&mm->rss_stat, 0, sizeof(mm->rss_stat)); > > spin_lock_init(&mm->page_table_lock); > > mm_init_cpumask(mm); > > What are the runtime effects of this? I think it is only > "/proc/pid/status:VmPin is screwed up", because we don't use vm_pinned > in rlimit checks. Yes? Hmm, 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 to me how we should deal with it. And BTW, we still have some drivers accounting pinned pages under mm->locked_vm - this is what commit bc3e53f682d9 was fighting against. It's infiniband/usnic and vfio. Thanks. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>