On Tue, Aug 01, 2023 at 01:28:56PM -0700, Suren Baghdasaryan wrote:
I have the new patchset ready but I see 3 places where we walk the pages after mmap_write_lock() while *I think* we can tolerate concurrent page faults (don't need to lock the vmas):
s390_enable_sie() break_ksm() clear_refs_write()
This one doesn't look right to be listed - tlb flushing is postponed after pgtable lock released, so I assume the same issue can happen like fork(): where we can have race coditions to corrupt data if, e.g., thread A writting with a writable (unflushed) tlb, alongside with thread B CoWing.
It'll indeed be nice to know whether break_ksm() can avoid that lock_vma parameter across quite a few function jumps. I don't yet see an immediate issue with this one.. No idea on s390_enable_sie(), but to make it simple and safe I'd simply leave it with the write vma lock to match the mmap write lock.
Thanks,