Merge pull request #7663 from keszybz/mkdir-return-value

util-lib: fix return value in mkdir_parents()
This commit is contained in:
Lennart Poettering
2017-12-24 11:59:58 +01:00
committed by GitHub
10 changed files with 69 additions and 56 deletions
+4 -5
View File
@@ -474,9 +474,9 @@ static int mkdir_userns(const char *path, mode_t mode, MountSettingsMask mask, u
assert(path);
r = mkdir(path, mode);
if (r < 0 && errno != EEXIST)
return -errno;
r = mkdir_errno_wrapper(path, mode);
if (r < 0 && r != -EEXIST)
return r;
if ((mask & MOUNT_USE_USERNS) == 0)
return 0;
@@ -484,8 +484,7 @@ static int mkdir_userns(const char *path, mode_t mode, MountSettingsMask mask, u
if (mask & MOUNT_IN_USERNS)
return 0;
r = lchown(path, uid_shift, uid_shift);
if (r < 0)
if (lchown(path, uid_shift, uid_shift) < 0)
return -errno;
return 0;
+14 -10
View File
@@ -1313,13 +1313,14 @@ static int userns_lchown(const char *p, uid_t uid, gid_t gid) {
static int userns_mkdir(const char *root, const char *path, mode_t mode, uid_t uid, gid_t gid) {
const char *q;
int r;
q = prefix_roota(root, path);
if (mkdir(q, mode) < 0) {
if (errno == EEXIST)
return 0;
return -errno;
}
r = mkdir_errno_wrapper(q, mode);
if (r == -EEXIST)
return 0;
if (r < 0)
return r;
return userns_lchown(q, uid, gid);
}
@@ -1599,8 +1600,10 @@ static int setup_pts(const char *dest) {
/* Mount /dev/pts itself */
p = prefix_roota(dest, "/dev/pts");
if (mkdir(p, 0755) < 0)
return log_error_errno(errno, "Failed to create /dev/pts: %m");
r = mkdir_errno_wrapper(p, 0755);
if (r < 0)
return log_error_errno(r, "Failed to create /dev/pts: %m");
r = mount_verbose(LOG_ERR, "devpts", p, "devpts", MS_NOSUID|MS_NOEXEC, options);
if (r < 0)
return r;
@@ -1846,12 +1849,13 @@ static int setup_journal(const char *directory) {
/* don't create parents here — if the host doesn't have
* permanent journal set up, don't force it here */
if (mkdir(p, 0755) < 0 && errno != EEXIST) {
r = mkdir_errno_wrapper(p, 0755);
if (r < 0 && r != -EEXIST) {
if (try) {
log_debug_errno(errno, "Failed to create %s, skipping journal setup: %m", p);
log_debug_errno(r, "Failed to create %s, skipping journal setup: %m", p);
return 0;
} else
return log_error_errno(errno, "Failed to create %s: %m", p);
return log_error_errno(r, "Failed to create %s: %m", p);
}
} else if (access(p, F_OK) < 0)