diff options
-rw-r--r-- | fs/hugetlbfs/inode.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 8e1b7825e2f3..fe625cd1719a 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/backing-dev.h> | 22 | #include <linux/backing-dev.h> |
23 | #include <linux/hugetlb.h> | 23 | #include <linux/hugetlb.h> |
24 | #include <linux/pagevec.h> | 24 | #include <linux/pagevec.h> |
25 | #include <linux/mman.h> | ||
25 | #include <linux/quotaops.h> | 26 | #include <linux/quotaops.h> |
26 | #include <linux/slab.h> | 27 | #include <linux/slab.h> |
27 | #include <linux/dnotify.h> | 28 | #include <linux/dnotify.h> |
@@ -112,6 +113,12 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, | |||
112 | if (len > TASK_SIZE) | 113 | if (len > TASK_SIZE) |
113 | return -ENOMEM; | 114 | return -ENOMEM; |
114 | 115 | ||
116 | if (flags & MAP_FIXED) { | ||
117 | if (prepare_hugepage_range(addr, len, pgoff)) | ||
118 | return -EINVAL; | ||
119 | return addr; | ||
120 | } | ||
121 | |||
115 | if (addr) { | 122 | if (addr) { |
116 | addr = ALIGN(addr, HPAGE_SIZE); | 123 | addr = ALIGN(addr, HPAGE_SIZE); |
117 | vma = find_vma(mm, addr); | 124 | vma = find_vma(mm, addr); |