[lxc-devel] [lxc/master] fixes
brauner on Github
lxc-bot at linuxcontainers.org
Thu Apr 9 12:31:33 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200409/d7b3bfed/attachment.bin>
-------------- next part --------------
From 46bc6f2a55dd483b396bc60b73f4e602abcc9b9f Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 9 Apr 2020 12:44:25 +0200
Subject: [PATCH 1/3] conf: tweak get_minimal_idmap()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 8d480b049a..4fe64770c5 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -3488,7 +3488,7 @@ static int lxc_free_idmap(struct lxc_list *id_map)
{
struct lxc_list *it, *next;
- lxc_list_for_each_safe (it, id_map, next) {
+ lxc_list_for_each_safe(it, id_map, next) {
lxc_list_del(it);
free(it->elem);
free(it);
@@ -3996,7 +3996,7 @@ static struct lxc_list *get_minimal_idmap(const struct lxc_conf *conf,
lxc_list_add_elem(tmplist, container_root_uid);
lxc_list_add_tail(idmap, tmplist);
- if (host_uid_map && (host_uid_map != container_root_uid)) {
+ if (host_uid_map != container_root_uid) {
/* idmap will now keep track of that memory. */
move_ptr(container_root_uid);
@@ -4018,7 +4018,7 @@ static struct lxc_list *get_minimal_idmap(const struct lxc_conf *conf,
lxc_list_add_elem(tmplist, container_root_gid);
lxc_list_add_tail(idmap, tmplist);
- if (host_gid_map && (host_gid_map != container_root_gid)) {
+ if (host_gid_map != container_root_gid) {
/* idmap will now keep track of that memory. */
move_ptr(container_root_gid);
@@ -4060,9 +4060,13 @@ int userns_exec_1(const struct lxc_conf *conf, int (*fn)(void *), void *data,
call_cleaner(lxc_free_idmap) struct lxc_list *idmap = NULL;
int ret = -1, status = -1;
char c = '1';
+ struct userns_fn_data d = {
+ .arg = data,
+ .fn = fn,
+ .fn_name = fn_name,
+ };
pid_t pid;
int pipe_fds[2];
- struct userns_fn_data d;
if (!conf)
return -EINVAL;
@@ -4075,9 +4079,6 @@ int userns_exec_1(const struct lxc_conf *conf, int (*fn)(void *), void *data,
if (ret < 0)
return -errno;
- d.fn = fn;
- d.fn_name = fn_name;
- d.arg = data;
d.p[0] = pipe_fds[0];
d.p[1] = pipe_fds[1];
From c6ba8981f5a0fc69b84e2b35786f1264b7d5b334 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 9 Apr 2020 12:49:16 +0200
Subject: [PATCH 2/3] conf: use macros all around in lxc_map_ids()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 4fe64770c5..193df3327f 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -2679,19 +2679,10 @@ int lxc_map_ids(struct lxc_list *idmap, pid_t pid)
struct id_map *map;
struct lxc_list *iterator;
enum idtype type;
- /* strlen("new at idmap") = 9
- * +
- * strlen(" ") = 1
- * +
- * INTTYPE_TO_STRLEN(uint32_t)
- * +
- * strlen(" ") = 1
- *
- * We add some additional space to make sure that we really have
- * LXC_IDMAPLEN bytes available for our the {g,u]id mapping.
- */
int ret = 0, gidmap = 0, uidmap = 0;
- char mapbuf[9 + 1 + INTTYPE_TO_STRLEN(uint32_t) + 1 + LXC_IDMAPLEN] = {0};
+ char mapbuf[STRLITERALLEN("new at idmap") + STRLITERALLEN(" ") +
+ INTTYPE_TO_STRLEN(pid_t) + STRLITERALLEN(" ") +
+ LXC_IDMAPLEN] = {0};
bool had_entry = false, use_shadow = false;
int hostuid, hostgid;
From 1758c195057c32476e0e42c5fb5cbfad836a060e Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 9 Apr 2020 14:30:31 +0200
Subject: [PATCH 3/3] conf: move_ptr() in all cases in mapped_hostid_add()
Closes #3366.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 193df3327f..45acc71a91 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -3918,18 +3918,19 @@ static struct id_map *mapped_hostid_add(const struct lxc_conf *conf, uid_t id,
/* Reuse existing mapping. */
tmp = find_mapped_hostid_entry(conf, id, type);
- if (tmp)
- return memcpy(entry, tmp, sizeof(*entry));
-
- /* Find new mapping. */
- hostid_mapped = find_unmapped_nsid(conf, type);
- if (hostid_mapped < 0)
- return log_debug(NULL, "Failed to find free mapping for id %d", id);
-
- entry->idtype = type;
- entry->nsid = hostid_mapped;
- entry->hostid = (unsigned long)id;
- entry->range = 1;
+ if (tmp) {
+ memcpy(entry, tmp, sizeof(*entry));
+ } else {
+ /* Find new mapping. */
+ hostid_mapped = find_unmapped_nsid(conf, type);
+ if (hostid_mapped < 0)
+ return log_debug(NULL, "Failed to find free mapping for id %d", id);
+
+ entry->idtype = type;
+ entry->nsid = hostid_mapped;
+ entry->hostid = (unsigned long)id;
+ entry->range = 1;
+ }
return move_ptr(entry);
}
More information about the lxc-devel
mailing list