mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-11 05:17:44 +03:00
core: introduce cgroup_add_device_allow()
This commit is contained in:
parent
839f187753
commit
fd870bac25
@ -304,6 +304,35 @@ void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) {
|
||||
}
|
||||
}
|
||||
|
||||
int cgroup_add_device_allow(CGroupContext *c, const char *dev, const char *mode) {
|
||||
_cleanup_free_ CGroupDeviceAllow *a = NULL;
|
||||
_cleanup_free_ char *d = NULL;
|
||||
|
||||
assert(c);
|
||||
assert(dev);
|
||||
assert(isempty(mode) || in_charset(mode, "rwm"));
|
||||
|
||||
a = new(CGroupDeviceAllow, 1);
|
||||
if (!a)
|
||||
return -ENOMEM;
|
||||
|
||||
d = strdup(dev);
|
||||
if (!d)
|
||||
return -ENOMEM;
|
||||
|
||||
*a = (CGroupDeviceAllow) {
|
||||
.path = TAKE_PTR(d),
|
||||
.r = isempty(mode) || !!strchr(mode, 'r'),
|
||||
.w = isempty(mode) || !!strchr(mode, 'w'),
|
||||
.m = isempty(mode) || !!strchr(mode, 'm'),
|
||||
};
|
||||
|
||||
LIST_PREPEND(device_allow, c->device_allow, a);
|
||||
TAKE_PTR(a);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lookup_block_device(const char *p, dev_t *ret) {
|
||||
struct stat st;
|
||||
int r;
|
||||
|
@ -137,6 +137,8 @@ void cgroup_context_free_io_device_limit(CGroupContext *c, CGroupIODeviceLimit *
|
||||
void cgroup_context_free_blockio_device_weight(CGroupContext *c, CGroupBlockIODeviceWeight *w);
|
||||
void cgroup_context_free_blockio_device_bandwidth(CGroupContext *c, CGroupBlockIODeviceBandwidth *b);
|
||||
|
||||
int cgroup_add_device_allow(CGroupContext *c, const char *dev, const char *mode);
|
||||
|
||||
CGroupMask unit_get_own_mask(Unit *u);
|
||||
CGroupMask unit_get_delegate_mask(Unit *u);
|
||||
CGroupMask unit_get_members_mask(Unit *u);
|
||||
|
@ -3212,7 +3212,6 @@ int config_parse_device_allow(
|
||||
|
||||
_cleanup_free_ char *path = NULL, *resolved = NULL;
|
||||
CGroupContext *c = data;
|
||||
CGroupDeviceAllow *a;
|
||||
const char *p = rvalue;
|
||||
int r;
|
||||
|
||||
@ -3261,17 +3260,7 @@ int config_parse_device_allow(
|
||||
return 0;
|
||||
}
|
||||
|
||||
a = new0(CGroupDeviceAllow, 1);
|
||||
if (!a)
|
||||
return log_oom();
|
||||
|
||||
a->path = TAKE_PTR(resolved);
|
||||
a->r = isempty(p) || !!strchr(p, 'r');
|
||||
a->w = isempty(p) || !!strchr(p, 'w');
|
||||
a->m = isempty(p) || !!strchr(p, 'm');
|
||||
|
||||
LIST_PREPEND(device_allow, c->device_allow, a);
|
||||
return 0;
|
||||
return cgroup_add_device_allow(c, resolved, p);
|
||||
}
|
||||
|
||||
int config_parse_io_device_weight(
|
||||
|
Loading…
Reference in New Issue
Block a user