Commit ca16d140 authored by KOSAKI Motohiro's avatar KOSAKI Motohiro Committed by Linus Torvalds

mm: don't access vm_flags as 'int'

The type of vma->vm_flags is 'unsigned long'. Neither 'int' nor
'unsigned int'. This patch fixes such misuse.
Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
[ Changed to use a typedef - we'll extend it to cover more cases
  later, since there has been discussion about making it a 64-bit
  type..                      - Linus ]
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4db70f73
...@@ -921,7 +921,8 @@ static int can_do_hugetlb_shm(void) ...@@ -921,7 +921,8 @@ static int can_do_hugetlb_shm(void)
return capable(CAP_IPC_LOCK) || in_group_p(sysctl_hugetlb_shm_group); return capable(CAP_IPC_LOCK) || in_group_p(sysctl_hugetlb_shm_group);
} }
struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag, struct file *hugetlb_file_setup(const char *name, size_t size,
vm_flags_t acctflag,
struct user_struct **user, int creat_flags) struct user_struct **user, int creat_flags)
{ {
int error = -ENOMEM; int error = -ENOMEM;
......
...@@ -211,7 +211,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) ...@@ -211,7 +211,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
{ {
struct mm_struct *mm = vma->vm_mm; struct mm_struct *mm = vma->vm_mm;
struct file *file = vma->vm_file; struct file *file = vma->vm_file;
int flags = vma->vm_flags; vm_flags_t flags = vma->vm_flags;
unsigned long ino = 0; unsigned long ino = 0;
unsigned long long pgoff = 0; unsigned long long pgoff = 0;
unsigned long start, end; unsigned long start, end;
......
...@@ -41,7 +41,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, ...@@ -41,7 +41,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, unsigned int flags); unsigned long address, unsigned int flags);
int hugetlb_reserve_pages(struct inode *inode, long from, long to, int hugetlb_reserve_pages(struct inode *inode, long from, long to,
struct vm_area_struct *vma, struct vm_area_struct *vma,
int acctflags); vm_flags_t vm_flags);
void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed); void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed);
int dequeue_hwpoisoned_huge_page(struct page *page); int dequeue_hwpoisoned_huge_page(struct page *page);
void copy_huge_page(struct page *dst, struct page *src); void copy_huge_page(struct page *dst, struct page *src);
...@@ -168,7 +168,7 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb) ...@@ -168,7 +168,7 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb)
extern const struct file_operations hugetlbfs_file_operations; extern const struct file_operations hugetlbfs_file_operations;
extern const struct vm_operations_struct hugetlb_vm_ops; extern const struct vm_operations_struct hugetlb_vm_ops;
struct file *hugetlb_file_setup(const char *name, size_t size, int acct, struct file *hugetlb_file_setup(const char *name, size_t size, vm_flags_t acct,
struct user_struct **user, int creat_flags); struct user_struct **user, int creat_flags);
int hugetlb_get_quota(struct address_space *mapping, long delta); int hugetlb_get_quota(struct address_space *mapping, long delta);
void hugetlb_put_quota(struct address_space *mapping, long delta); void hugetlb_put_quota(struct address_space *mapping, long delta);
...@@ -192,7 +192,7 @@ static inline void set_file_hugepages(struct file *file) ...@@ -192,7 +192,7 @@ static inline void set_file_hugepages(struct file *file)
#define is_file_hugepages(file) 0 #define is_file_hugepages(file) 0
#define set_file_hugepages(file) BUG() #define set_file_hugepages(file) BUG()
static inline struct file *hugetlb_file_setup(const char *name, size_t size, static inline struct file *hugetlb_file_setup(const char *name, size_t size,
int acctflag, struct user_struct **user, int creat_flags) vm_flags_t acctflag, struct user_struct **user, int creat_flags)
{ {
return ERR_PTR(-ENOSYS); return ERR_PTR(-ENOSYS);
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) static inline int is_vm_hugetlb_page(struct vm_area_struct *vma)
{ {
return vma->vm_flags & VM_HUGETLB; return !!(vma->vm_flags & VM_HUGETLB);
} }
#else #else
......
...@@ -165,12 +165,12 @@ extern pgprot_t protection_map[16]; ...@@ -165,12 +165,12 @@ extern pgprot_t protection_map[16];
*/ */
static inline int is_linear_pfn_mapping(struct vm_area_struct *vma) static inline int is_linear_pfn_mapping(struct vm_area_struct *vma)
{ {
return (vma->vm_flags & VM_PFN_AT_MMAP); return !!(vma->vm_flags & VM_PFN_AT_MMAP);
} }
static inline int is_pfn_mapping(struct vm_area_struct *vma) static inline int is_pfn_mapping(struct vm_area_struct *vma)
{ {
return (vma->vm_flags & VM_PFNMAP); return !!(vma->vm_flags & VM_PFNMAP);
} }
/* /*
...@@ -1432,7 +1432,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, ...@@ -1432,7 +1432,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
unsigned long flag, unsigned long pgoff); unsigned long flag, unsigned long pgoff);
extern unsigned long mmap_region(struct file *file, unsigned long addr, extern unsigned long mmap_region(struct file *file, unsigned long addr,
unsigned long len, unsigned long flags, unsigned long len, unsigned long flags,
unsigned int vm_flags, unsigned long pgoff); vm_flags_t vm_flags, unsigned long pgoff);
static inline unsigned long do_mmap(struct file *file, unsigned long addr, static inline unsigned long do_mmap(struct file *file, unsigned long addr,
unsigned long len, unsigned long prot, unsigned long len, unsigned long prot,
......
...@@ -102,6 +102,8 @@ struct page { ...@@ -102,6 +102,8 @@ struct page {
#endif #endif
}; };
typedef unsigned long __nocast vm_flags_t;
/* /*
* A region containing a mapping of a non-memory backed file under NOMMU * A region containing a mapping of a non-memory backed file under NOMMU
* conditions. These are held in a global tree and are pinned by the VMAs that * conditions. These are held in a global tree and are pinned by the VMAs that
...@@ -109,7 +111,7 @@ struct page { ...@@ -109,7 +111,7 @@ struct page {
*/ */
struct vm_region { struct vm_region {
struct rb_node vm_rb; /* link in global region tree */ struct rb_node vm_rb; /* link in global region tree */
unsigned long vm_flags; /* VMA vm_flags */ vm_flags_t vm_flags; /* VMA vm_flags */
unsigned long vm_start; /* start address of region */ unsigned long vm_start; /* start address of region */
unsigned long vm_end; /* region initialised to here */ unsigned long vm_end; /* region initialised to here */
unsigned long vm_top; /* region allocated to here */ unsigned long vm_top; /* region allocated to here */
......
...@@ -347,7 +347,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) ...@@ -347,7 +347,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
struct file * file; struct file * file;
char name[13]; char name[13];
int id; int id;
int acctflag = 0; vm_flags_t acctflag = 0;
if (size < SHMMIN || size > ns->shm_ctlmax) if (size < SHMMIN || size > ns->shm_ctlmax)
return -EINVAL; return -EINVAL;
......
...@@ -224,7 +224,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, ...@@ -224,7 +224,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
/* /*
* drop PG_Mlocked flag for over-mapped range * drop PG_Mlocked flag for over-mapped range
*/ */
unsigned int saved_flags = vma->vm_flags; vm_flags_t saved_flags = vma->vm_flags;
munlock_vma_pages_range(vma, start, start + size); munlock_vma_pages_range(vma, start, start + size);
vma->vm_flags = saved_flags; vma->vm_flags = saved_flags;
} }
......
...@@ -2833,7 +2833,7 @@ void hugetlb_change_protection(struct vm_area_struct *vma, ...@@ -2833,7 +2833,7 @@ void hugetlb_change_protection(struct vm_area_struct *vma,
int hugetlb_reserve_pages(struct inode *inode, int hugetlb_reserve_pages(struct inode *inode,
long from, long to, long from, long to,
struct vm_area_struct *vma, struct vm_area_struct *vma,
int acctflag) vm_flags_t vm_flags)
{ {
long ret, chg; long ret, chg;
struct hstate *h = hstate_inode(inode); struct hstate *h = hstate_inode(inode);
...@@ -2843,7 +2843,7 @@ int hugetlb_reserve_pages(struct inode *inode, ...@@ -2843,7 +2843,7 @@ int hugetlb_reserve_pages(struct inode *inode,
* attempt will be made for VM_NORESERVE to allocate a page * attempt will be made for VM_NORESERVE to allocate a page
* and filesystem quota without using reserves * and filesystem quota without using reserves
*/ */
if (acctflag & VM_NORESERVE) if (vm_flags & VM_NORESERVE)
return 0; return 0;
/* /*
......
...@@ -730,7 +730,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr, ...@@ -730,7 +730,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr,
add_taint(TAINT_BAD_PAGE); add_taint(TAINT_BAD_PAGE);
} }
static inline int is_cow_mapping(unsigned int flags) static inline int is_cow_mapping(vm_flags_t flags)
{ {
return (flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE; return (flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE;
} }
......
...@@ -307,13 +307,13 @@ void munlock_vma_pages_range(struct vm_area_struct *vma, ...@@ -307,13 +307,13 @@ void munlock_vma_pages_range(struct vm_area_struct *vma,
* For vmas that pass the filters, merge/split as appropriate. * For vmas that pass the filters, merge/split as appropriate.
*/ */
static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev, static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev,
unsigned long start, unsigned long end, unsigned int newflags) unsigned long start, unsigned long end, vm_flags_t newflags)
{ {
struct mm_struct *mm = vma->vm_mm; struct mm_struct *mm = vma->vm_mm;
pgoff_t pgoff; pgoff_t pgoff;
int nr_pages; int nr_pages;
int ret = 0; int ret = 0;
int lock = newflags & VM_LOCKED; int lock = !!(newflags & VM_LOCKED);
if (newflags == vma->vm_flags || (vma->vm_flags & VM_SPECIAL) || if (newflags == vma->vm_flags || (vma->vm_flags & VM_SPECIAL) ||
is_vm_hugetlb_page(vma) || vma == get_gate_vma(current->mm)) is_vm_hugetlb_page(vma) || vma == get_gate_vma(current->mm))
...@@ -385,7 +385,7 @@ static int do_mlock(unsigned long start, size_t len, int on) ...@@ -385,7 +385,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
prev = vma; prev = vma;
for (nstart = start ; ; ) { for (nstart = start ; ; ) {
unsigned int newflags; vm_flags_t newflags;
/* Here we know that vma->vm_start <= nstart < vma->vm_end. */ /* Here we know that vma->vm_start <= nstart < vma->vm_end. */
...@@ -524,7 +524,7 @@ static int do_mlockall(int flags) ...@@ -524,7 +524,7 @@ static int do_mlockall(int flags)
goto out; goto out;
for (vma = current->mm->mmap; vma ; vma = prev->vm_next) { for (vma = current->mm->mmap; vma ; vma = prev->vm_next) {
unsigned int newflags; vm_flags_t newflags;
newflags = vma->vm_flags | VM_LOCKED; newflags = vma->vm_flags | VM_LOCKED;
if (!(flags & MCL_CURRENT)) if (!(flags & MCL_CURRENT))
......
...@@ -960,7 +960,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, ...@@ -960,7 +960,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
{ {
struct mm_struct * mm = current->mm; struct mm_struct * mm = current->mm;
struct inode *inode; struct inode *inode;
unsigned int vm_flags; vm_flags_t vm_flags;
int error; int error;
unsigned long reqprot = prot; unsigned long reqprot = prot;
...@@ -1165,7 +1165,7 @@ SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg) ...@@ -1165,7 +1165,7 @@ SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg)
*/ */
int vma_wants_writenotify(struct vm_area_struct *vma) int vma_wants_writenotify(struct vm_area_struct *vma)
{ {
unsigned int vm_flags = vma->vm_flags; vm_flags_t vm_flags = vma->vm_flags;
/* If it was private or non-writable, the write bit is already clear */ /* If it was private or non-writable, the write bit is already clear */
if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED))) if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED)))
...@@ -1193,7 +1193,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma) ...@@ -1193,7 +1193,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
* We account for memory if it's a private writeable mapping, * We account for memory if it's a private writeable mapping,
* not hugepages and VM_NORESERVE wasn't set. * not hugepages and VM_NORESERVE wasn't set.
*/ */
static inline int accountable_mapping(struct file *file, unsigned int vm_flags) static inline int accountable_mapping(struct file *file, vm_flags_t vm_flags)
{ {
/* /*
* hugetlb has its own accounting separate from the core VM * hugetlb has its own accounting separate from the core VM
...@@ -1207,7 +1207,7 @@ static inline int accountable_mapping(struct file *file, unsigned int vm_flags) ...@@ -1207,7 +1207,7 @@ static inline int accountable_mapping(struct file *file, unsigned int vm_flags)
unsigned long mmap_region(struct file *file, unsigned long addr, unsigned long mmap_region(struct file *file, unsigned long addr,
unsigned long len, unsigned long flags, unsigned long len, unsigned long flags,
unsigned int vm_flags, unsigned long pgoff) vm_flags_t vm_flags, unsigned long pgoff)
{ {
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct vm_area_struct *vma, *prev; struct vm_area_struct *vma, *prev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment