History

fork: reset mm->pinned_vm

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. 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 bc3e53f682d9 was fighting against. It's infiniband/usnic and vfio.

Vladimir Davydov committed 12 years ago

Commit ce65cef1 parent 41f727f1 file · +1 −0Browse files

Unified · Split

kernel/fork.c+1−0
@@ -543,6 +543,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) · 542 unmodified lines
543543 atomic_long_set(&mm->nr_ptes, 0);
544544 mm->map_count = 0;
545545 mm->locked_vm = 0;
546+ mm->pinned_vm = 0;
546547 memset(&mm->rss_stat, 0, sizeof(mm->rss_stat));
547548 spin_lock_init(&mm->page_table_lock);
548549 mm_init_cpumask(mm);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t