qfile-unpacker: do not call fdatasync() at each file (#1257)

POSIX  requires  that  a  read(2)  which  can be proved to occur after a
write() has returned returns the new data.
We want here only that other processes in the same VM will see the
file either fully written, or not see it at all. So ensuring that
linkat(2) is called after write is completed should be enough.

Fixes QubesOS/qubes-issues#1257

(cherry picked from commit c1d42f1602)
This commit is contained in:
Marek Marczykowski-Górecki 2015-10-09 03:13:19 +02:00
parent d2a8725217
commit eb11cf6989
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -137,7 +137,6 @@ void process_one_file_reg(struct file_header *untrusted_hdr,
else else
do_exit(errno, untrusted_name); do_exit(errno, untrusted_name);
} }
fdatasync(fdout);
if (use_tmpfile) { if (use_tmpfile) {
char fd_str[7]; char fd_str[7];
snprintf(fd_str, sizeof(fd_str), "%d", fdout); snprintf(fd_str, sizeof(fd_str), "%d", fdout);