From: Wolfgang Bumiller Date: Fri, 15 May 2020 14:33:34 +0000 (+0200) Subject: improve LXC_CMD_GET_CGROUP compatibility X-Git-Tag: lxc-5.0.0~434^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=400d579e69f5f41a14d9fd0617f0e4972ae53dcf;p=thirdparty%2Flxc.git improve LXC_CMD_GET_CGROUP compatibility When a newer lxc library communicates with an older one (such as running an lxc 4.0 lxc-freeze on a longer running container which was started while lxc was still at version 3), the LXC_CMD_GET_LIMITING_CGROUP command is not available, causing the remote to just close the socket. Catch this and try the previous command instead. Signed-off-by: Wolfgang Bumiller --- diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 6309f68e0..25c409e3b 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -509,8 +509,21 @@ static char *lxc_cmd_get_cgroup_path_do(const char *name, const char *lxcpath, if (ret < 0) return NULL; - if (ret == 0) + if (ret == 0) { + if (command == LXC_CMD_GET_LIMITING_CGROUP) { + /* + * This may indicate that the container was started + * under an ealier version before + * `cgroup_advanced_isolation` as implemented, there + * it sees an unknown command and just closes the + * socket, sending us an EOF. + */ + return lxc_cmd_get_cgroup_path_do(name, lxcpath, + subsystem, + LXC_CMD_GET_CGROUP); + } return NULL; + } if (cmd.rsp.ret < 0 || cmd.rsp.datalen < 0) return NULL;