diff options
-rw-r--r-- | mm/madvise.c | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/mm/madvise.c b/mm/madvise.c index a2294bc1cc7b..cb7d74d56deb 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -133,38 +133,6 @@ static int replace_anon_vma_name(struct vm_area_struct *vma, return 0; } - -static int madvise_set_anon_name(struct mm_struct *mm, unsigned long start, - unsigned long len_in, struct anon_vma_name *anon_name) -{ - unsigned long end; - unsigned long len; - struct madvise_behavior madv_behavior = { - .mm = mm, - .behavior = __MADV_SET_ANON_VMA_NAME, - .lock_mode = MADVISE_MMAP_WRITE_LOCK, - .anon_name = anon_name, - }; - - if (start & ~PAGE_MASK) - return -EINVAL; - len = (len_in + ~PAGE_MASK) & PAGE_MASK; - - /* Check to see whether len was rounded up from small -ve to zero */ - if (len_in && !len) - return -EINVAL; - - end = start + len; - if (end < start) - return -EINVAL; - - if (end == start) - return 0; - - madv_behavior.range.start = start; - madv_behavior.range.end = end; - return madvise_walk_vmas(&madv_behavior); -} #else /* CONFIG_ANON_VMA_NAME */ static int replace_anon_vma_name(struct vm_area_struct *vma, struct anon_vma_name *anon_name) @@ -2109,6 +2077,38 @@ static inline bool is_valid_name_char(char ch) !strchr(ANON_VMA_NAME_INVALID_CHARS, ch); } +static int madvise_set_anon_name(struct mm_struct *mm, unsigned long start, + unsigned long len_in, struct anon_vma_name *anon_name) +{ + unsigned long end; + unsigned long len; + struct madvise_behavior madv_behavior = { + .mm = mm, + .behavior = __MADV_SET_ANON_VMA_NAME, + .lock_mode = MADVISE_MMAP_WRITE_LOCK, + .anon_name = anon_name, + }; + + if (start & ~PAGE_MASK) + return -EINVAL; + len = (len_in + ~PAGE_MASK) & PAGE_MASK; + + /* Check to see whether len was rounded up from small -ve to zero */ + if (len_in && !len) + return -EINVAL; + + end = start + len; + if (end < start) + return -EINVAL; + + if (end == start) + return 0; + + madv_behavior.range.start = start; + madv_behavior.range.end = end; + return madvise_walk_vmas(&madv_behavior); +} + int set_anon_vma_name(unsigned long addr, unsigned long size, const char __user *uname) { |