lbutils/file: don't eintr loop fcntl

not indicated. the way we use it is basically like
stat, to check that a file exists / is a file.

just err the fuck out

nuance: SETLK is non-blocking (no wait).
we should loop on SETLKW, but we don't use that.
in this codebase, we use SETLK for locking a
tmpfile, but because of race conditions and
wanting to make another file quickly, we just
try again with a newly generated name, with a
certain number of retries, so we justt use SETLK

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-04-01 19:22:10 +01:00
parent a6d2de4e88
commit 6b67e12428
2 changed files with 3 additions and 9 deletions
+1 -3
View File
@@ -48,9 +48,7 @@ open_gbe_file(void)
if (f->gbe_st.st_nlink == 0) if (f->gbe_st.st_nlink == 0)
exitf("%s: file unlinked while open", f->fname); exitf("%s: file unlinked while open", f->fname);
while (fs_retry(saved_errno, if ((_flags = fcntl(f->gbe_fd, F_GETFL)) == -1)
_flags = fcntl(f->gbe_fd, F_GETFL)));
if (_flags == -1)
exitf("%s: fcntl(F_GETFL)", f->fname); exitf("%s: fcntl(F_GETFL)", f->fname);
/* O_APPEND allows POSIX write() to ignore /* O_APPEND allows POSIX write() to ignore
+2 -6
View File
@@ -752,9 +752,7 @@ int secure_file(int *fd,
if_err(*fd < 0, EBADF)) if_err(*fd < 0, EBADF))
goto err_demons; goto err_demons;
while (fs_retry(saved_errno, if ((flags = fcntl(*fd, F_GETFL)) == -1)
flags = fcntl(*fd, F_GETFL)));
if (flags == -1)
goto err_demons; goto err_demons;
if (if_err(bad_flags > 0 && (flags & bad_flags), EPERM)) if (if_err(bad_flags > 0 && (flags & bad_flags), EPERM))
@@ -899,9 +897,7 @@ lock_file(int fd, int flags)
fl.l_whence = SEEK_SET; fl.l_whence = SEEK_SET;
while (fs_retry(saved_errno, if ((fcntl_rval = fcntl(fd, F_SETLK, &fl)) == -1)
fcntl_rval = fcntl(fd, F_SETLK, &fl)));
if (fcntl_rval == -1)
goto err_lock_file; goto err_lock_file;
reset_caller_errno(0); reset_caller_errno(0);