hugetlbfs: fix alignment of huge page requests
When calling shmget() with SHM_HUGETLB, shmget aligns the request size to PAGE_SIZE, but this is not sufficient. Modify hugetlb_file_setup() to align requests to the huge page size, and to accept an address argument so that all alignment checks can be performed in hugetlb_file_setup(), rather than in its callers. Change newseg() and mmap_pgoff() to match the new prototype and eliminate a now redundant alignment check. [akpm@linux-foundation.org: fix build] Signed-off-by: Steven Truelove <steven.truelove@utoronto.ca> Cc: Hugh Dickins <hughd@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
21a3c273f8
commit
40716e2924
@@ -152,7 +152,8 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb)
|
||||
|
||||
extern const struct file_operations hugetlbfs_file_operations;
|
||||
extern const struct vm_operations_struct hugetlb_vm_ops;
|
||||
struct file *hugetlb_file_setup(const char *name, size_t size, vm_flags_t acct,
|
||||
struct file *hugetlb_file_setup(const char *name, unsigned long addr,
|
||||
size_t size, vm_flags_t acct,
|
||||
struct user_struct **user, int creat_flags);
|
||||
|
||||
static inline int is_file_hugepages(struct file *file)
|
||||
@@ -168,7 +169,8 @@ static inline int is_file_hugepages(struct file *file)
|
||||
#else /* !CONFIG_HUGETLBFS */
|
||||
|
||||
#define is_file_hugepages(file) 0
|
||||
static inline struct file *hugetlb_file_setup(const char *name, size_t size,
|
||||
static inline struct file *
|
||||
hugetlb_file_setup(const char *name, unsigned long addr, size_t size,
|
||||
vm_flags_t acctflag, struct user_struct **user, int creat_flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
|
Reference in New Issue
Block a user