diff --git a/src/scheme/proc.rs b/src/scheme/proc.rs index 4216c6782a..dd9adbb528 100644 --- a/src/scheme/proc.rs +++ b/src/scheme/proc.rs @@ -1316,15 +1316,25 @@ impl ContextHandle { op @ ADDRSPACE_OP_MMAP | op @ ADDRSPACE_OP_TRANSFER => { let fd = next()??; let offset = next()??; - let page_span = crate::syscall::validate_region(next()??, next()??)?; - let flags = MapFlags::from_bits(next()??).ok_or(Error::new(EINVAL))?; + let addr_raw = next()??; + let size_raw = next()??; + let flags_raw = next()??; + info!("AS:MMAP fd={} off={} addr={:#x} size={:#x} flags={:#x}", fd, offset, addr_raw, size_raw, flags_raw); + let page_span = crate::syscall::validate_region(addr_raw, size_raw)?; + let flags = match MapFlags::from_bits(flags_raw) { + Some(f) => f, + None => { + info!("AS:MMAP MapFlags::from_bits FAILED"); + return Err(Error::new(EINVAL)); + } + }; if fd == !0 { if op == ADDRSPACE_OP_TRANSFER { return Err(Error::new(EOPNOTSUPP)); } - return MemoryScheme::fmap_anonymous( + let res = MemoryScheme::fmap_anonymous( &addrspace, &Map { offset, @@ -1335,6 +1345,11 @@ impl ContextHandle { false, token, ); + match res { + Ok(a) => { info!("AS:MMAP fmap_anonymous ok addr={:#x}", a); } + Err(ref e) => { info!("AS:MMAP fmap_anonymous ERR errno={}", e.errno); } + }; + return res; } else { let (scheme, number) = extract_scheme_number(fd, token)?;