posix_fallocate(2) && posix_fadvise(2) are somewhat broken

Dag-Erling Smørgrav des at des.no
Tue Dec 8 18:54:14 UTC 2015


Konstantin Belousov <kostikbel at gmail.com> writes:
> Dag-Erling Smørgrav <des at des.no> writes:
> > Maxim Sobolev <sobomax at FreeBSD.org> writes:
> > > Hi, while working on some unrelated feature I've noticed that at least
> > > those two system calls are not returning proper value (-1) on error.
> > > Instead actual errno value is returned from the syscall verbatim,
> > > i.e. posix_fadvise() returns 22 on EINVAL.
> > That's how syscalls work.
> No, this is not how typical syscalls work, but is how the posix_fallocate()
> and posix_fadvise() are specified by Posix.  The patch is wrong, see also
> r261080 and r288640.

Umm, I can't find the code ATM but syscalls store the actual return
value in td_retval and return 0 or EWHATEVER and the syscall wrapper
handles the translation.  If that's not what Maxim was talking about,
then please ignore me.

Anyway, happy to hear that the X/Open group have found a new way to
screw people over.

DES
-- 
Dag-Erling Smørgrav - des at des.no


More information about the freebsd-current mailing list