Hello, Etienne Brateau, le lun. 25 mai 2026 22:07:13 +0200, a ecrit: > POSIX specs specify that invalid flags shall return EINVAL and that > ENOMEM shall be returned in case of address outside of address space or > when one or more pages are not mapped. > --- > sysdeps/mach/hurd/msync.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/sysdeps/mach/hurd/msync.c b/sysdeps/mach/hurd/msync.c > index 46eabd1ee7..7e0ffff8db 100644 > --- a/sysdeps/mach/hurd/msync.c > +++ b/sysdeps/mach/hurd/msync.c > @@ -36,6 +36,15 @@ msync (void *addr, size_t length, int flags) > vm_address_t cur = (vm_address_t) addr; > vm_address_t target = cur + length; > > + if (flags & ~(MS_ASYNC | MS_INVALIDATE | MS_SYNC)) > + return __hurd_fail (EINVAL); > + > + if (flags & MS_ASYNC && flags & MS_SYNC) > + return __hurd_fail (EINVAL); > + > + if (target < cur) > + return __hurd_fail (ENOMEM); > + > vm_size_t len; > vm_prot_t prot; > vm_prot_t max_prot; > @@ -65,7 +74,7 @@ msync (void *addr, size_t length, int flags) > > if (cur >= target) > /* We were given an ending address within a hole. */ > - break; > + return __hurd_fail (ENOMEM);
Don't we also want to return ENOMEM when begin > cur? Samuel
