diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/hugetlb.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 27fad5d9bcf6..075877b1cbc0 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -88,6 +88,17 @@ static struct page *dequeue_huge_page(struct vm_area_struct *vma, | |||
88 | return page; | 88 | return page; |
89 | } | 89 | } |
90 | 90 | ||
91 | static void free_huge_page(struct page *page) | ||
92 | { | ||
93 | BUG_ON(page_count(page)); | ||
94 | |||
95 | INIT_LIST_HEAD(&page->lru); | ||
96 | |||
97 | spin_lock(&hugetlb_lock); | ||
98 | enqueue_huge_page(page); | ||
99 | spin_unlock(&hugetlb_lock); | ||
100 | } | ||
101 | |||
91 | static int alloc_fresh_huge_page(void) | 102 | static int alloc_fresh_huge_page(void) |
92 | { | 103 | { |
93 | static int nid = 0; | 104 | static int nid = 0; |
@@ -107,18 +118,8 @@ static int alloc_fresh_huge_page(void) | |||
107 | return 0; | 118 | return 0; |
108 | } | 119 | } |
109 | 120 | ||
110 | void free_huge_page(struct page *page) | 121 | static struct page *alloc_huge_page(struct vm_area_struct *vma, |
111 | { | 122 | unsigned long addr) |
112 | BUG_ON(page_count(page)); | ||
113 | |||
114 | INIT_LIST_HEAD(&page->lru); | ||
115 | |||
116 | spin_lock(&hugetlb_lock); | ||
117 | enqueue_huge_page(page); | ||
118 | spin_unlock(&hugetlb_lock); | ||
119 | } | ||
120 | |||
121 | struct page *alloc_huge_page(struct vm_area_struct *vma, unsigned long addr) | ||
122 | { | 123 | { |
123 | struct inode *inode = vma->vm_file->f_dentry->d_inode; | 124 | struct inode *inode = vma->vm_file->f_dentry->d_inode; |
124 | struct page *page; | 125 | struct page *page; |