Messages in this thread Patch in this message | | | From | Mike Kravetz <> | Subject | [PATCH] mm/hugetlb: i_mmap_lock_write before unmapping in remove_inode_hugepages | Date | Wed, 21 Oct 2015 18:42:27 -0700 |
| |
Code was added to remove_inode_hugepages that will unmap a page if it is mapped. i_mmap_lock_write() must be taken during the call to hugetlb_vmdelete_list(). This is to prevent mappings(vmas) from being added or deleted while the list of vmas is being examined.
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com> --- fs/hugetlbfs/inode.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index f25b72f..0f3999d 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -428,9 +428,11 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart, * until we finish removing the page. */ if (page_mapped(page)) { + i_mmap_lock_write(mapping); hugetlb_vmdelete_list(&mapping->i_mmap, next * pages_per_huge_page(h), (next + 1) * pages_per_huge_page(h)); + i_mmap_unlock_write(mapping); } lock_page(page); -- 2.4.3
| |