diff --git a/kernel/syscall.c b/kernel/syscall.c index d8e6df25..5120512d 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -7812,6 +7812,16 @@ arg_out: ihk_mc_spinlock_lock_noirq(<hread->vm->memory_range_lock); + /* Is base valid? */ + range = lookup_process_memory_range(lthread->vm, + (uintptr_t)local_iov[li].iov_base, + (uintptr_t)(local_iov[li].iov_base + 1)); + + if (!range) { + ret = -EFAULT; + goto pli_out; + } + /* Is range valid? */ range = lookup_process_memory_range(lthread->vm, (uintptr_t)local_iov[li].iov_base, @@ -7845,6 +7855,16 @@ pli_out: ihk_mc_spinlock_lock_noirq(&rvm->memory_range_lock); + /* Is base valid? */ + range = lookup_process_memory_range(rvm, + (uintptr_t)remote_iov[li].iov_base, + (uintptr_t)(remote_iov[li].iov_base + 1)); + + if (range == NULL) { + ret = -EFAULT; + goto pri_out; + } + /* Is range valid? */ range = lookup_process_memory_range(rvm, (uintptr_t)remote_iov[li].iov_base,