forked from Minki/linux
hugetlb: chg cannot become less than 0
chg is unsigned, so it cannot be less than 0. Also, since region_chg returns long, let vma_needs_reservation() forward this to alloc_huge_page(). Store it as long as well. all callers cast it to long anyway. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Cc: Andy Whitcroft <apw@shadowen.org> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Adam Litke <agl@us.ibm.com> Cc: Johannes Weiner <hannes@saeurebad.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d1d7487173
commit
e2f17d9459
@ -918,7 +918,7 @@ static void return_unused_surplus_pages(struct hstate *h,
|
|||||||
* an instantiated the change should be committed via vma_commit_reservation.
|
* an instantiated the change should be committed via vma_commit_reservation.
|
||||||
* No action is required on failure.
|
* No action is required on failure.
|
||||||
*/
|
*/
|
||||||
static int vma_needs_reservation(struct hstate *h,
|
static long vma_needs_reservation(struct hstate *h,
|
||||||
struct vm_area_struct *vma, unsigned long addr)
|
struct vm_area_struct *vma, unsigned long addr)
|
||||||
{
|
{
|
||||||
struct address_space *mapping = vma->vm_file->f_mapping;
|
struct address_space *mapping = vma->vm_file->f_mapping;
|
||||||
@ -933,7 +933,7 @@ static int vma_needs_reservation(struct hstate *h,
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
int err;
|
long err;
|
||||||
pgoff_t idx = vma_hugecache_offset(h, vma, addr);
|
pgoff_t idx = vma_hugecache_offset(h, vma, addr);
|
||||||
struct resv_map *reservations = vma_resv_map(vma);
|
struct resv_map *reservations = vma_resv_map(vma);
|
||||||
|
|
||||||
@ -969,7 +969,7 @@ static struct page *alloc_huge_page(struct vm_area_struct *vma,
|
|||||||
struct page *page;
|
struct page *page;
|
||||||
struct address_space *mapping = vma->vm_file->f_mapping;
|
struct address_space *mapping = vma->vm_file->f_mapping;
|
||||||
struct inode *inode = mapping->host;
|
struct inode *inode = mapping->host;
|
||||||
unsigned int chg;
|
long chg;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Processes that did not create the mapping will have no reserves and
|
* Processes that did not create the mapping will have no reserves and
|
||||||
|
Loading…
Reference in New Issue
Block a user