diff --git a/include/linux/mm.h b/include/linux/mm.h index 18ab714d4f00..3821b83ddf02 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -621,9 +621,6 @@ struct vm_operations_struct { static inline void INIT_VMA(struct vm_area_struct *vma) { INIT_LIST_HEAD(&vma->anon_vma_chain); -#ifdef CONFIG_SPECULATIVE_PAGE_FAULT - seqcount_init(&vma->vm_sequence); -#endif } static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) @@ -1597,47 +1594,6 @@ int follow_phys(struct vm_area_struct *vma, unsigned long address, int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write); -#ifdef CONFIG_SPECULATIVE_PAGE_FAULT -static inline void vm_write_begin(struct vm_area_struct *vma) -{ - write_seqcount_begin(&vma->vm_sequence); -} -static inline void vm_write_begin_nested(struct vm_area_struct *vma, - int subclass) -{ - write_seqcount_begin_nested(&vma->vm_sequence, subclass); -} -static inline void vm_write_end(struct vm_area_struct *vma) -{ - write_seqcount_end(&vma->vm_sequence); -} -static inline void vm_raw_write_begin(struct vm_area_struct *vma) -{ - raw_write_seqcount_begin(&vma->vm_sequence); -} -static inline void vm_raw_write_end(struct vm_area_struct *vma) -{ - raw_write_seqcount_end(&vma->vm_sequence); -} -#else -static inline void vm_write_begin(struct vm_area_struct *vma) -{ -} -static inline void vm_write_begin_nested(struct vm_area_struct *vma, - int subclass) -{ -} -static inline void vm_write_end(struct vm_area_struct *vma) -{ -} -static inline void vm_raw_write_begin(struct vm_area_struct *vma) -{ -} -static inline void vm_raw_write_end(struct vm_area_struct *vma) -{ -} -#endif /* CONFIG_SPECULATIVE_PAGE_FAULT */ - extern void truncate_pagecache(struct inode *inode, loff_t new); extern void truncate_setsize(struct inode *inode, loff_t newsize); void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to); diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 894a443f2a47..41580bcd286a 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -362,9 +362,7 @@ struct vm_area_struct { struct mempolicy *vm_policy; /* NUMA policy for the VMA */ #endif struct vm_userfaultfd_ctx vm_userfaultfd_ctx; -#ifdef CONFIG_SPECULATIVE_PAGE_FAULT - seqcount_t vm_sequence; -#endif + ANDROID_KABI_RESERVE(1); ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(3); diff --git a/mm/memory.c b/mm/memory.c index e2f20c6bf83c..658c0580a973 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1284,7 +1284,6 @@ void unmap_page_range(struct mmu_gather *tlb, unsigned long next; BUG_ON(addr >= end); - vm_write_begin(vma); tlb_start_vma(tlb, vma); pgd = pgd_offset(vma->vm_mm, addr); do { @@ -1294,7 +1293,6 @@ void unmap_page_range(struct mmu_gather *tlb, next = zap_p4d_range(tlb, vma, pgd, addr, next, details); } while (pgd++, addr = next, addr != end); tlb_end_vma(tlb, vma); - vm_write_end(vma); } diff --git a/mm/mmap.c b/mm/mmap.c index fae234a425c6..bcc12a4f0662 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -729,30 +729,6 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, long adjust_next = 0; int remove_next = 0; - /* - * Why using vm_raw_write*() functions here to avoid lockdep's warning ? - * - * Locked is complaining about a theoretical lock dependency, involving - * 3 locks: - * mapping->i_mmap_rwsem --> vma->vm_sequence --> fs_reclaim - * - * Here are the major path leading to this dependency : - * 1. __vma_adjust() mmap_sem -> vm_sequence -> i_mmap_rwsem - * 2. move_vmap() mmap_sem -> vm_sequence -> fs_reclaim - * 3. __alloc_pages_nodemask() fs_reclaim -> i_mmap_rwsem - * 4. unmap_mapping_range() i_mmap_rwsem -> vm_sequence - * - * So there is no way to solve this easily, especially because in - * unmap_mapping_range() the i_mmap_rwsem is grab while the impacted - * VMAs are not yet known. - * However, the way the vm_seq is used is guarantying that we will - * never block on it since we just check for its value and never wait - * for it to move, see vma_has_changed() and handle_speculative_fault(). - */ - vm_raw_write_begin(vma); - if (next) - vm_raw_write_begin(next); - if (next && !insert) { struct vm_area_struct *exporter = NULL, *importer = NULL; @@ -963,7 +939,6 @@ again: anon_vma_merge(vma, next); mm->map_count--; mpol_put(vma_policy(next)); - vm_raw_write_end(next); vm_area_free(next); /* * In mprotect's case 6 (see comments on vma_merge), @@ -978,8 +953,6 @@ again: * "vma->vm_next" gap must be updated. */ next = vma->vm_next; - if (next) - vm_raw_write_begin(next); } else { /* * For the scope of the comment "next" and @@ -1026,10 +999,6 @@ again: if (insert && file) uprobe_mmap(insert); - if (next && next != vma) - vm_raw_write_end(next); - vm_raw_write_end(vma); - validate_mm(mm); return 0;