Unverified Commit 6382a96e authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!5606 mm/mlock: return EINVAL for illegal user memory range in mlock

Merge Pull Request from: @ci-robot 
 
PR sync from: Wupeng Ma <mawupeng1@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/AOI4D7DEO7NUTAQNE32UY46TJLZNI2FD/ 
From: Ma Wupeng <mawupeng1@huawei.com>

mlock return -EINVAL for invalid len.

Ma Wupeng (1):
  mm/mlock: return EINVAL for illegal user memory range in mlock


-- 
2.25.1
 
https://gitee.com/openeuler/kernel/issues/I9C0QZ 
 
Link:https://gitee.com/openeuler/kernel/pulls/5606

 

Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parents 6d2f62dc 7013d4d4
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -568,8 +568,6 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,
	end = start + len;
	if (end < start)
		return -EINVAL;
	if (end == start)
		return 0;
	vma = find_vma(current->mm, start);
	if (!vma || vma->vm_start > start)
		return -ENOMEM;
@@ -655,9 +653,15 @@ static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t fla
	if (!can_do_mlock())
		return -EPERM;

	if (!len)
		return 0;

	len = PAGE_ALIGN(len + (offset_in_page(start)));
	start &= PAGE_MASK;

	if (!len)
		return -EINVAL;

	lock_limit = rlimit(RLIMIT_MEMLOCK);
	lock_limit >>= PAGE_SHIFT;
	locked = len >> PAGE_SHIFT;
@@ -715,8 +719,13 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)

	start = untagged_addr(start);

	if (!len)
		return 0;

	len = PAGE_ALIGN(len + (offset_in_page(start)));
	start &= PAGE_MASK;
	if (!len)
		return -EINVAL;

	if (mmap_write_lock_killable(current->mm))
		return -EINTR;