diff options
Diffstat (limited to 'fs/hugetlbfs/inode.c')
-rw-r--r-- | fs/hugetlbfs/inode.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 8c1cef3bb677..f568102da1e8 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/highmem.h> | 18 | #include <linux/highmem.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/string.h> | 20 | #include <linux/string.h> |
21 | #include <linux/capability.h> | ||
21 | #include <linux/backing-dev.h> | 22 | #include <linux/backing-dev.h> |
22 | #include <linux/hugetlb.h> | 23 | #include <linux/hugetlb.h> |
23 | #include <linux/pagevec.h> | 24 | #include <linux/pagevec.h> |
@@ -100,9 +101,6 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) | |||
100 | loff_t len, vma_len; | 101 | loff_t len, vma_len; |
101 | int ret; | 102 | int ret; |
102 | 103 | ||
103 | if ((vma->vm_flags & (VM_MAYSHARE | VM_WRITE)) == VM_WRITE) | ||
104 | return -EINVAL; | ||
105 | |||
106 | if (vma->vm_pgoff & (HPAGE_SIZE / PAGE_SIZE - 1)) | 104 | if (vma->vm_pgoff & (HPAGE_SIZE / PAGE_SIZE - 1)) |
107 | return -EINVAL; | 105 | return -EINVAL; |
108 | 106 | ||
@@ -121,7 +119,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) | |||
121 | 119 | ||
122 | vma_len = (loff_t)(vma->vm_end - vma->vm_start); | 120 | vma_len = (loff_t)(vma->vm_end - vma->vm_start); |
123 | 121 | ||
124 | down(&inode->i_sem); | 122 | mutex_lock(&inode->i_mutex); |
125 | file_accessed(file); | 123 | file_accessed(file); |
126 | vma->vm_flags |= VM_HUGETLB | VM_RESERVED; | 124 | vma->vm_flags |= VM_HUGETLB | VM_RESERVED; |
127 | vma->vm_ops = &hugetlb_vm_ops; | 125 | vma->vm_ops = &hugetlb_vm_ops; |
@@ -136,7 +134,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) | |||
136 | if (inode->i_size < len) | 134 | if (inode->i_size < len) |
137 | inode->i_size = len; | 135 | inode->i_size = len; |
138 | out: | 136 | out: |
139 | up(&inode->i_sem); | 137 | mutex_unlock(&inode->i_mutex); |
140 | 138 | ||
141 | return ret; | 139 | return ret; |
142 | } | 140 | } |
@@ -404,7 +402,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb, uid_t uid, | |||
404 | inode->i_mapping->backing_dev_info =&hugetlbfs_backing_dev_info; | 402 | inode->i_mapping->backing_dev_info =&hugetlbfs_backing_dev_info; |
405 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 403 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
406 | info = HUGETLBFS_I(inode); | 404 | info = HUGETLBFS_I(inode); |
407 | mpol_shared_policy_init(&info->policy); | 405 | mpol_shared_policy_init(&info->policy, MPOL_DEFAULT, NULL); |
408 | switch (mode & S_IFMT) { | 406 | switch (mode & S_IFMT) { |
409 | default: | 407 | default: |
410 | init_special_inode(inode, mode, dev); | 408 | init_special_inode(inode, mode, dev); |