chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: do not read system boot timestamps in systemd --user mode
[elogind.git]
/
src
/
core
/
mount-setup.c
diff --git
a/src/core/mount-setup.c
b/src/core/mount-setup.c
index c601c9742c7d3fd249a54d59093b01f075c61c2a..0a45b247743ca22a0a23db7c96e87d24e4998e86 100644
(file)
--- a/
src/core/mount-setup.c
+++ b/
src/core/mount-setup.c
@@
-43,10
+43,7
@@
#include "virt.h"
#include "efivars.h"
#include "smack-util.h"
#include "virt.h"
#include "efivars.h"
#include "smack-util.h"
-
-#ifndef TTY_GID
-#define TTY_GID 5
-#endif
+#include "def.h"
typedef enum MountMode {
MNT_NONE = 0,
typedef enum MountMode {
MNT_NONE = 0,
@@
-175,7
+172,10
@@
static int mount_one(const MountPoint *p, bool relabel) {
/* The access mode here doesn't really matter too much, since
* the mounted file system will take precedence anyway. */
/* The access mode here doesn't really matter too much, since
* the mounted file system will take precedence anyway. */
- mkdir_p_label(p->where, 0755);
+ if (relabel)
+ mkdir_p_label(p->where, 0755);
+ else
+ mkdir_p(p->where, 0755);
log_debug("Mounting %s to %s of type %s with options %s.",
p->what,
log_debug("Mounting %s to %s of type %s with options %s.",
p->what,
@@
-219,10
+219,10
@@
int mount_setup_early(void) {
}
int mount_cgroup_controllers(char ***join_controllers) {
}
int mount_cgroup_controllers(char ***join_controllers) {
- int r;
- char buf[LINE_MAX];
_cleanup_set_free_free_ Set *controllers = NULL;
_cleanup_fclose_ FILE *f;
_cleanup_set_free_free_ Set *controllers = NULL;
_cleanup_fclose_ FILE *f;
+ char buf[LINE_MAX];
+ int r;
/* Mount all available cgroup controllers that are built into the kernel. */
/* Mount all available cgroup controllers that are built into the kernel. */
@@
-265,6
+265,7
@@
int mount_cgroup_controllers(char ***join_controllers) {
}
for (;;) {
}
for (;;) {
+ _cleanup_free_ char *options = NULL, *controller = NULL, *where = NULL;
MountPoint p = {
.what = "cgroup",
.type = "cgroup",
MountPoint p = {
.what = "cgroup",
.type = "cgroup",
@@
-272,7
+273,6
@@
int mount_cgroup_controllers(char ***join_controllers) {
.mode = MNT_IN_CONTAINER,
};
char ***k = NULL;
.mode = MNT_IN_CONTAINER,
};
char ***k = NULL;
- _cleanup_free_ char *options = NULL, *controller;
controller = set_steal_first(controllers);
if (!controller)
controller = set_steal_first(controllers);
if (!controller)
@@
-289,7
+289,7
@@
int mount_cgroup_controllers(char ***join_controllers) {
for (i = *k, j = *k; *i; i++) {
if (!streq(*i, controller)) {
for (i = *k, j = *k; *i; i++) {
if (!streq(*i, controller)) {
-
char _cleanup_free_
*t;
+
_cleanup_free_ char
*t;
t = set_remove(controllers, *i);
if (!t) {
t = set_remove(controllers, *i);
if (!t) {
@@
-311,7
+311,11
@@
int mount_cgroup_controllers(char ***join_controllers) {
controller = NULL;
}
controller = NULL;
}
- p.where = strappenda("/sys/fs/cgroup/", options);
+ where = strappend("/sys/fs/cgroup/", options);
+ if (!where)
+ return log_oom();
+
+ p.where = where;
p.options = options;
r = mount_one(&p, true);
p.options = options;
r = mount_one(&p, true);
@@
-322,7
+326,11
@@
int mount_cgroup_controllers(char ***join_controllers) {
char **i;
for (i = *k; *i; i++) {
char **i;
for (i = *k; *i; i++) {
- char *t = strappenda("/sys/fs/cgroup/", *i);
+ _cleanup_free_ char *t = NULL;
+
+ t = strappend("/sys/fs/cgroup/", *i);
+ if (!t)
+ return log_oom();
r = symlink(options, t);
if (r < 0 && errno != EEXIST) {
r = symlink(options, t);
if (r < 0 && errno != EEXIST) {
@@
-333,6
+341,10
@@
int mount_cgroup_controllers(char ***join_controllers) {
}
}
}
}
+ /* Now that we mounted everything, let's make the tmpfs the
+ * cgroup file systems are mounted into read-only. */
+ mount("tmpfs", "/sys/fs/cgroup", "tmpfs", MS_REMOUNT|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME|MS_RDONLY, "mode=755");
+
return 0;
}
return 0;
}