|
@@ -1367,9 +1367,13 @@ SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len,
|
|
|
len = ALIGN(len, huge_page_size(hstate_file(file)));
|
|
|
} else if (flags & MAP_HUGETLB) {
|
|
|
struct user_struct *user = NULL;
|
|
|
+ struct hstate *hs = hstate_sizelog((flags >> MAP_HUGE_SHIFT) &
|
|
|
+ SHM_HUGE_MASK);
|
|
|
|
|
|
- len = ALIGN(len, huge_page_size(hstate_sizelog(
|
|
|
- (flags >> MAP_HUGE_SHIFT) & MAP_HUGE_MASK)));
|
|
|
+ if (!hs)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ len = ALIGN(len, huge_page_size(hs));
|
|
|
/*
|
|
|
* VM_NORESERVE is used because the reservations will be
|
|
|
* taken when vm_ops->mmap() is called
|