[COMMITTED] manual/filesys.texi: O_WRONLY files also fail with EBADF when used with posix_fallocate emulation.

Carlos O'Donell carlos@redhat.com
Tue Sep 29 15:47:00 GMT 2015


On 09/29/2015 11:32 AM, Carlos O'Donell wrote:
> In the posix_fallocate description in the manual we list various
> drawbacks with the emulation, including the fact that a file opened
> with O_APPEND fails with EBADF. Similarly a file opened with O_WRONLY
> fails with EBADF. We must be able to emulate a compare-and-swap via
> pread/compare/pwrite in order to make the emulation as safe as possible.
> It is not acceptable to ignore the read failure because it could result
> in significant data loss across all of the blocks. There is no other way
> to make this work without a true atomic CAS and SIGBUS handler (which
> is looking more attractive as a way to remove the race condition).

Just a note here, this still doesn't solve the O_WRONLY problem, because
such an fd can't be mapped PROT_WRITE since it violates the permissions
of file descriptor. We would need an fdreopen syscall, which doesn't exist,
and that would open a race window where other threads might actually
succeed at reading a file that should be write only (potential security
risk).

Cheers,
Carlos.



More information about the Libc-alpha mailing list