On Fri, Feb 09, 2018 at 07:26:09AM +0300, Kirill A. Shutemov wrote: > On Thu, Feb 08, 2018 at 01:37:43PM -0800, Matthew Wilcox wrote: > > On Thu, Feb 08, 2018 at 12:21:00PM -0800, Matthew Wilcox wrote: > > > Now that I think about it, though, perhaps the simplest solution is not > > > to worry about checking whether _mapcount has saturated, and instead when > > > adding a new mmap, check whether this task already has it mapped 10 times. > > > If so, refuse the mapping. > > > > That turns out to be quite easy. Comments on this approach? > > This *may* break some remap_file_pages() users.
We have some?! ;-) I don't understand the use case where they want to map the same page of a file multiple times into the same process. I mean, yes, of course, they might ask for it, but I don't understand why they would. Do you have any insight here? > And it may be rather costly for popular binaries. Consider libc.so. We already walk this tree to insert the mapping; this just adds a second walk of the tree to check which overlapping mappings exist. I would expect it to just make the tree cache-hot.