diff options
Diffstat (limited to 'fs/hugetlbfs/inode.c')
| -rw-r--r-- | fs/hugetlbfs/inode.c | 16 | 
1 files changed, 7 insertions, 9 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 6502c7e776d1..412f295acebe 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -40,7 +40,7 @@  #include <linux/sched/mm.h>  static const struct address_space_operations hugetlbfs_aops; -const struct file_operations hugetlbfs_file_operations; +static const struct file_operations hugetlbfs_file_operations;  static const struct inode_operations hugetlbfs_dir_inode_operations;  static const struct inode_operations hugetlbfs_inode_operations; @@ -176,14 +176,12 @@ hugetlb_get_unmapped_area_bottomup(struct file *file, unsigned long addr,  		unsigned long len, unsigned long pgoff, unsigned long flags)  {  	struct hstate *h = hstate_file(file); -	struct vm_unmapped_area_info info; +	struct vm_unmapped_area_info info = {}; -	info.flags = 0;  	info.length = len;  	info.low_limit = current->mm->mmap_base;  	info.high_limit = arch_get_mmap_end(addr, len, flags);  	info.align_mask = PAGE_MASK & ~huge_page_mask(h); -	info.align_offset = 0;  	return vm_unmapped_area(&info);  } @@ -192,14 +190,13 @@ hugetlb_get_unmapped_area_topdown(struct file *file, unsigned long addr,  		unsigned long len, unsigned long pgoff, unsigned long flags)  {  	struct hstate *h = hstate_file(file); -	struct vm_unmapped_area_info info; +	struct vm_unmapped_area_info info = {};  	info.flags = VM_UNMAPPED_AREA_TOPDOWN;  	info.length = len;  	info.low_limit = PAGE_SIZE;  	info.high_limit = arch_get_mmap_base(addr, current->mm->mmap_base);  	info.align_mask = PAGE_MASK & ~huge_page_mask(h); -	info.align_offset = 0;  	addr = vm_unmapped_area(&info);  	/* @@ -249,11 +246,11 @@ generic_hugetlb_get_unmapped_area(struct file *file, unsigned long addr,  	}  	/* -	 * Use mm->get_unmapped_area value as a hint to use topdown routine. +	 * Use MMF_TOPDOWN flag as a hint to use topdown routine.  	 * If architectures have special needs, they should define their own  	 * version of hugetlb_get_unmapped_area.  	 */ -	if (mm->get_unmapped_area == arch_get_unmapped_area_topdown) +	if (test_bit(MMF_TOPDOWN, &mm->flags))  		return hugetlb_get_unmapped_area_topdown(file, addr, len,  				pgoff, flags);  	return hugetlb_get_unmapped_area_bottomup(file, addr, len, @@ -1301,13 +1298,14 @@ static void init_once(void *foo)  	inode_init_once(&ei->vfs_inode);  } -const struct file_operations hugetlbfs_file_operations = { +static const struct file_operations hugetlbfs_file_operations = {  	.read_iter		= hugetlbfs_read_iter,  	.mmap			= hugetlbfs_file_mmap,  	.fsync			= noop_fsync,  	.get_unmapped_area	= hugetlb_get_unmapped_area,  	.llseek			= default_llseek,  	.fallocate		= hugetlbfs_fallocate, +	.fop_flags		= FOP_HUGE_PAGES,  };  static const struct inode_operations hugetlbfs_dir_inode_operations = {  |