Commit 6e0152c7 authored by Namjae Jeon's avatar Namjae Jeon
Browse files

ntfs: fix mmap_prepare writable check for shared mappings



Linus pointed out that checking only VMA_WRITE_BIT is incorrect.
Private writable mappings (MAP_PRIVATE) set VM_WRITE but do not
write back to the filesystem. Also, mappings that can become
writable via mprotect() (VM_MAYWRITE) must be handled.

Use vma_desc_test_all(VMA_SHARED_BIT, VMA_MAYWRITE_BIT) instead,
which matches what other filesystems do.

Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Reviewed-by: default avatarHyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
parent 660b9823
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -644,7 +644,7 @@ static int ntfs_file_mmap_prepare(struct vm_area_desc *desc)
	if (NInoCompressed(NTFS_I(inode)))
		return -EOPNOTSUPP;

	if (vma_desc_test(desc, VMA_WRITE_BIT)) {
	if (vma_desc_test_all(desc, VMA_SHARED_BIT, VMA_MAYWRITE_BIT)) {
		struct inode *inode = file_inode(file);
		loff_t from, to;
		int err;