assert(p);
+ /* Relabel first, just in case */
+ label_fix(p->where, true);
+
if ((r = path_is_mount_point(p->where)) < 0)
return r;
return p->fatal ? -errno : 0;
}
+ /* Relabel again, since we now mounted something fresh here */
label_fix(p->where, false);
return 0;
static int mount_cgroup_controllers(void) {
int r;
FILE *f;
- char buf [256];
+ char buf[LINE_MAX];
/* Mount all available cgroup controllers that are built into the kernel. */
if ((r = mount_one(mount_table+i)) < 0)
return r;
- /* Nodes in devtmpfs need to be manually updated for the
- * appropriate labels, after mounting. The other virtual API
- * file systems do not need. */
-
- if (unlink("/dev/.systemd-relabel-devtmpfs") >= 0)
+ /* Nodes in devtmpfs and /run need to be manually updated for
+ * the appropriate labels, after mounting. The other virtual
+ * API file systems like /sys and /proc do not need that, they
+ * use the same label for all their files. */
+ if (unlink("/dev/.systemd-relabel-run-dev") >= 0) {
nftw("/dev", nftw_cb, 64, FTW_MOUNT|FTW_PHYS);
+ nftw("/run", nftw_cb, 64, FTW_MOUNT|FTW_PHYS);
+ }
/* Create a few default symlinks, which are normally created
- * bei udevd, but some scripts might need them before we start
+ * by udevd, but some scripts might need them before we start
* udevd. */
-
NULSTR_FOREACH_PAIR(j, k, symlinks)
symlink_and_label(j, k);
+
/* Create a few directories we always want around */
mkdir("/run/systemd", 0755);
- mkdir("/run/systemd/ask-password", 0755);
return mount_cgroup_controllers();
}