On Fri, Aug 4, 2023 at 5:26 PM Suren Baghdasaryan [off-list ref] wrote:
On Fri, Aug 4, 2023 at 5:15 PM Linus Torvalds
[off-list ref] wrote:
quoted
On Fri, 4 Aug 2023 at 16:25, Mateusz Guzik [off-list ref] wrote:
quoted
I know of these guys, I think they are excluded as is -- they go
through access_remote_vm, starting with:
if (mmap_read_lock_killable(mm))
return 0;
while dup_mmap already write locks the parent's mm.
Oh, you're only worried about vma_start_write()?
That's a non-issue. It doesn't take the lock normally, since it starts off with
if (__is_vma_write_locked(vma, &mm_lock_seq))
return;
which catches on the lock sequence number already being set.
That check will prevent re-locking but if vma is not already locked
then the call will proceed with obtaining the lock and setting
vma->vm_lock_seq to mm->mm_lock_seq.
The optimization Mateusz describes looks valid to me. If there is
nobody else to fault a page and mm_users is stable (which I think it
is because we are holding mmap_lock for write) then we can skip vma
locking, I think.
quoted
So no extra locking there.
Well, technically there's extra locking because the code stupidly
doesn't initialize new vma allocations to the right sequence number,
but that was talked about here:
https://lore.kernel.org/all/CAHk-=wiCrWAoEesBuoGoqqufvesicbGp3cX0LyKgEvsFaZNpDA@mail.gmail.com/ (local)
and it's a separate issue.
Linus
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel