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