From: Kirill Tkhai <ktkhai@virtuozzo.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: akpm@linux-foundation.org, dan.j.williams@intel.com,
mhocko@suse.com, keith.busch@intel.com,
kirill.shutemov@linux.intel.com,
alexander.h.duyck@linux.intel.com, ira.weiny@intel.com,
andreyknvl@google.com, arunks@codeaurora.org, vbabka@suse.cz,
cl@linux.com, riel@surriel.com, keescook@chromium.org,
hannes@cmpxchg.org, npiggin@gmail.com,
mathieu.desnoyers@efficios.com, shakeelb@google.com, guro@fb.com,
aarcange@redhat.com, hughd@google.com, jglisse@redhat.com,
mgorman@techsingularity.net, daniel.m.jordan@oracle.com,
jannh@google.com, kilobyte@angband.pl, linux-api@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v2 0/7] mm: process_vm_mmap() -- syscall for duplication a process mapping
Date: Thu, 23 May 2019 19:11:37 +0300 [thread overview]
Message-ID: <4b0a2b23-abc7-fa0d-5e30-74741331e7e5@virtuozzo.com> (raw)
In-Reply-To: <20190522152254.5cyxhjizuwuojlix@box>
On 22.05.2019 18:22, Kirill A. Shutemov wrote:
> On Mon, May 20, 2019 at 05:00:01PM +0300, Kirill Tkhai wrote:
>> This patchset adds a new syscall, which makes possible
>> to clone a VMA from a process to current process.
>> The syscall supplements the functionality provided
>> by process_vm_writev() and process_vm_readv() syscalls,
>> and it may be useful in many situation.
>
> Kirill, could you explain how the change affects rmap and how it is safe.
>
> My concern is that the patchset allows to map the same page multiple times
> within one process or even map page allocated by child to the parrent.
>
> It was not allowed before.
>
> In the best case it makes reasoning about rmap substantially more difficult.
I don't think here is big impact from process relationships, because of
as it existed before, the main rule of VMA chaining is that VMA is younger
or older each other. For example, reusing of anon_vma in anon_vma_clone()
may be done either children or siblings. Also, it is possible reparenting
after some of processes dies; or splitting two branches of processes having
the same grand parent into two chains after the grand parent dies, so it looks
there should be many combinations already available.
Mapping of the same page multiple times is a different thing, and it was never
allowed for rmap.
Could you please say more specifically what looks suspicious for you and I'll
try to answer then? Otherwise, it's possible to write explanations as big as
a dissertation and to miss all answers to that is interested for you :)
>
> But I'm worry it will introduce hard-to-debug bugs, like described in
> https://lwn.net/Articles/383162/.
I read the article, but there are a lot of messages in thread, I'm not sure,
that found the actual fix there. But it looks like one of the fixes may be
be usage of anon_vma->root in __page_set_anon_rmap().
> Note, that is some cases we care about rmap walk order (see for instance
> mremap() case). I'm not convinced that the feature will not break
> something in the area.
Yeah, thanks for pointing, I'll check this.
Kirill
next prev parent reply other threads:[~2019-05-23 16:11 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-20 14:00 Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 1/7] mm: Add process_vm_mmap() syscall declaration Kirill Tkhai
2019-05-21 0:28 ` Ira Weiny
2019-05-21 8:29 ` Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 2/7] mm: Extend copy_vma() Kirill Tkhai
2019-05-21 8:18 ` Kirill A. Shutemov
2019-05-21 8:48 ` Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 3/7] mm: Extend copy_page_range() Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 4/7] mm: Export round_hint_to_min() Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 5/7] mm: Introduce may_mmap_overlapped_region() helper Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 6/7] mm: Introduce find_vma_filter_flags() helper Kirill Tkhai
2019-05-20 14:00 ` [PATCH v2 7/7] mm: Add process_vm_mmap() Kirill Tkhai
2019-05-21 14:43 ` [PATCH v2 0/7] mm: process_vm_mmap() -- syscall for duplication a process mapping Andy Lutomirski
2019-05-21 15:52 ` Kirill Tkhai
2019-05-21 15:59 ` Kirill Tkhai
2019-05-21 16:20 ` Jann Horn
2019-05-21 17:03 ` Kirill Tkhai
2019-05-21 17:28 ` Jann Horn
2019-05-22 10:03 ` Kirill Tkhai
2019-05-21 16:43 ` Andy Lutomirski
2019-05-21 17:44 ` Kirill Tkhai
2019-05-23 16:19 ` Andy Lutomirski
2019-05-24 10:36 ` Kirill Tkhai
2019-05-22 15:22 ` Kirill A. Shutemov
2019-05-23 16:11 ` Kirill Tkhai [this message]
2019-05-24 10:45 ` Kirill Tkhai
2019-05-24 11:52 ` Kirill A. Shutemov
2019-05-24 14:00 ` Kirill Tkhai
2019-05-27 23:30 ` Kirill A. Shutemov
2019-05-28 9:15 ` Kirill Tkhai
2019-05-28 16:15 ` Kirill A. Shutemov
2019-05-29 14:33 ` Kirill Tkhai
2019-06-03 14:38 ` Kirill Tkhai
2019-06-03 14:56 ` Kirill Tkhai
2019-06-03 17:47 ` Kirill A. Shutemov
2019-06-04 9:32 ` Kirill Tkhai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4b0a2b23-abc7-fa0d-5e30-74741331e7e5@virtuozzo.com \
--to=ktkhai@virtuozzo.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.h.duyck@linux.intel.com \
--cc=andreyknvl@google.com \
--cc=arunks@codeaurora.org \
--cc=cl@linux.com \
--cc=dan.j.williams@intel.com \
--cc=daniel.m.jordan@oracle.com \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=ira.weiny@intel.com \
--cc=jannh@google.com \
--cc=jglisse@redhat.com \
--cc=keescook@chromium.org \
--cc=keith.busch@intel.com \
--cc=kilobyte@angband.pl \
--cc=kirill.shutemov@linux.intel.com \
--cc=kirill@shutemov.name \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=npiggin@gmail.com \
--cc=riel@surriel.com \
--cc=shakeelb@google.com \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox