mm, dax: VMA with vm_ops->pfn_mkwrite wants to be write-notified
authorKirill A. Shutemov <[email protected]>
Tue, 22 Sep 2015 21:59:12 +0000 (14:59 -0700)
committerLinus Torvalds <[email protected]>
Tue, 22 Sep 2015 22:09:53 +0000 (15:09 -0700)
commit8a04446ab0cf4f35d9f583cd6adcbf7c534e4995
treec0a245eb875c5399b8c02b6ddcb9d10e303d9e0b
parent09f7298100ea9767324298ab0c7979f6d7463183
mm, dax: VMA with vm_ops->pfn_mkwrite wants to be write-notified

For VM_PFNMAP and VM_MIXEDMAP we use vm_ops->pfn_mkwrite instead of
vm_ops->page_mkwrite to notify abort write access.  This means we want
vma->vm_page_prot to be write-protected if the VMA provides this vm_ops.

A theoretical scenario that will cause these missed events is:

  On writable mapping with vm_ops->pfn_mkwrite, but without
  vm_ops->page_mkwrite: read fault followed by write access to the pfn.
  Writable pte will be set up on read fault and write fault will not be
  generated.

I found it examining Dave's complaint on generic/080:

http://lkml.kernel.org/g/20150831233803.GO3902@dastard

Although I don't think it's the reason.

It shouldn't be a problem for ext2/ext4 as they provide both pfn_mkwrite
and page_mkwrite.

[[email protected]: add local vm_ops to avoid 80-cols mess]
Signed-off-by: Kirill A. Shutemov <[email protected]>
Cc: Yigal Korman <[email protected]>
Acked-by: Boaz Harrosh <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Dave Chinner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/mmap.c