core/namespace: rename() might return ENOTEMPTY if target dir exists

This commit is contained in:
Mike Yuan
2026-02-25 12:36:45 +01:00
parent 2e71d0a2bd
commit a45fb074fe
+3 -1
View File
@@ -3338,6 +3338,8 @@ static int make_tmp_prefix(const char *prefix) {
_cleanup_close_ int fd = -EBADF;
int r;
assert(prefix);
/* Don't do anything unless we know the dir is actually missing */
r = access(prefix, F_OK);
if (r >= 0)
@@ -3369,7 +3371,7 @@ static int make_tmp_prefix(const char *prefix) {
r = RET_NERRNO(rename(t, prefix));
if (r < 0) {
(void) rmdir(t);
return r == -EEXIST ? 0 : r; /* it's fine if someone else created the dir by now */
return IN_SET(r, -EEXIST, -ENOTEMPTY) ? 0 : r; /* it's fine if someone else created the dir by now */
}
return 0;