The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/2576
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Signed-off-by: Christian Brauner <[email protected]>
From 8ed8a6265bcd8958f0d026b2168bd6ee2ea61b68 Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Sat, 25 Aug 2018 06:17:49 +0200 Subject: [PATCH 1/4] commands: return -1 on lxc_cmd_get_init_pid() err MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A while back the whole lxc_cmd() infrastructure was changed to return meaningful negative error codes. But lxc_cmd_get_init_pid() should always return -1. Make it so! Signed-off-by: Christian Brauner <[email protected]> Reported-by: Stéphane Graber <[email protected]> --- src/lxc/commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 30d6b6047..63a8949a6 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -381,7 +381,7 @@ pid_t lxc_cmd_get_init_pid(const char *name, const char *lxcpath) ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); if (ret < 0) - return ret; + return -1; return PTR_TO_INT(cmd.rsp.data); } From c8208ff034ed15f675ad1d707c15b5719d018685 Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Sat, 25 Aug 2018 06:36:12 +0200 Subject: [PATCH 2/4] tests: add basic.c Signed-off-by: Christian Brauner <[email protected]> --- src/tests/Makefile.am | 4 +++- src/tests/basic.c | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/tests/basic.c diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index e51efafd8..f891bddf0 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -2,6 +2,7 @@ if ENABLE_TESTS LDADD = ../lxc/liblxc.la +lxc_test_basic_SOURCES = basic.c lxc_test_containertests_SOURCES = containertests.c lxc_test_locktests_SOURCES = locktests.c lxc_test_startone_SOURCES = startone.c @@ -66,7 +67,7 @@ bin_PROGRAMS = lxc-test-containertests lxc-test-locktests lxc-test-startone \ lxc-test-config-jump-table lxc-test-shortlived \ lxc-test-api-reboot lxc-test-state-server lxc-test-share-ns \ lxc-test-criu-check-feature lxc-test-raw-clone \ - lxc-test-mount-injection + lxc-test-mount-injection lxc-test-basic bin_SCRIPTS = if ENABLE_TOOLS @@ -93,6 +94,7 @@ endif endif EXTRA_DIST = \ + basic.c \ cgpath.c \ clonetest.c \ concurrent.c \ diff --git a/src/tests/basic.c b/src/tests/basic.c new file mode 100644 index 000000000..4e7a05fe9 --- /dev/null +++ b/src/tests/basic.c @@ -0,0 +1,46 @@ +/* liblxcapi + * + * Copyright © 2018 Christian Brauner <[email protected]>. + * Copyright © 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include <stdio.h> +#include <stdlib.h> + +#include <lxc/lxccontainer.h> + +#include "lxctest.h" + +int main(int argc, char *argv[]) +{ + int ret; + struct lxc_container *c; + + c = lxc_container_new("init-pid", NULL); + if (!c) + exit(EXIT_FAILURE); + + ret = c->init_pid(c); + c->destroy(c); + lxc_container_put(c); + /* Return value needs to be -1. Any other negative error code is to be + * considered invalid. + */ + if (ret != -1) + exit(EXIT_FAILURE); + + exit(EXIT_SUCCESS); +} From 691544a0e421a99fe2750dacb8cbbc7c5508b5f2 Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Sat, 25 Aug 2018 06:44:36 +0200 Subject: [PATCH 3/4] tests: cleanup Makefile Signed-off-by: Christian Brauner <[email protected]> --- src/tests/Makefile.am | 226 +++++++++++++++++++++++------------------- 1 file changed, 123 insertions(+), 103 deletions(-) diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index f891bddf0..059de8994 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -2,52 +2,52 @@ if ENABLE_TESTS LDADD = ../lxc/liblxc.la +lxc_test_api_reboot_SOURCES = api_reboot.c +lxc_test_apparmor_SOURCES = aa.c +lxc_test_attach_SOURCES = attach.c lxc_test_basic_SOURCES = basic.c -lxc_test_containertests_SOURCES = containertests.c -lxc_test_locktests_SOURCES = locktests.c -lxc_test_startone_SOURCES = startone.c -lxc_test_destroytest_SOURCES = destroytest.c -lxc_test_saveconfig_SOURCES = saveconfig.c -lxc_test_createtest_SOURCES = createtest.c -lxc_test_shutdowntest_SOURCES = shutdowntest.c -lxc_test_get_item_SOURCES = get_item.c -lxc_test_getkeys_SOURCES = getkeys.c -lxc_test_lxcpath_SOURCES = lxcpath.c lxc_test_cgpath_SOURCES = cgpath.c lxc_test_clonetest_SOURCES = clonetest.c +lxc_test_concurrent_SOURCES = concurrent.c +lxc_test_config_jump_table_SOURCES = config_jump_table.c lxctest.h lxc_test_console_SOURCES = console.c lxc_test_console_log_SOURCES = console_log.c lxctest.h -lxc_test_snapshot_SOURCES = snapshot.c -lxc_test_concurrent_SOURCES = concurrent.c -lxc_test_may_control_SOURCES = may_control.c -lxc_test_reboot_SOURCES = reboot.c -lxc_test_api_reboot_SOURCES = api_reboot.c -lxc_test_list_SOURCES = list.c -lxc_test_attach_SOURCES = attach.c +lxc_test_containertests_SOURCES = containertests.c +lxc_test_createtest_SOURCES = createtest.c +lxc_test_criu_check_feature_SOURCES = criu_check_feature.c lxctest.h +lxc_test_destroytest_SOURCES = destroytest.c lxc_test_device_add_remove_SOURCES = device_add_remove.c -lxc_test_apparmor_SOURCES = aa.c -lxc_test_utils_SOURCES = lxc-test-utils.c lxctest.h +lxc_test_getkeys_SOURCES = getkeys.c +lxc_test_get_item_SOURCES = get_item.c +lxc_test_list_SOURCES = list.c +lxc_test_locktests_SOURCES = locktests.c +lxc_test_lxcpath_SOURCES = lxcpath.c +lxc_test_may_control_SOURCES = may_control.c +lxc_test_mount_injection_SOURCES = mount_injection.c lxctest.h lxc_test_parse_config_file_SOURCES = parse_config_file.c lxctest.h -lxc_test_config_jump_table_SOURCES = config_jump_table.c lxctest.h +lxc_test_raw_clone_SOURCES = lxc_raw_clone.c lxctest.h +lxc_test_reboot_SOURCES = reboot.c +lxc_test_saveconfig_SOURCES = saveconfig.c +lxc_test_share_ns_SOURCES = share_ns.c lxctest.h lxc_test_shortlived_SOURCES = shortlived.c +lxc_test_shutdowntest_SOURCES = shutdowntest.c +lxc_test_snapshot_SOURCES = snapshot.c +lxc_test_startone_SOURCES = startone.c lxc_test_state_server_SOURCES = state_server.c lxctest.h -lxc_test_share_ns_SOURCES = share_ns.c lxctest.h -lxc_test_criu_check_feature_SOURCES = criu_check_feature.c lxctest.h -lxc_test_raw_clone_SOURCES = lxc_raw_clone.c lxctest.h -lxc_test_mount_injection_SOURCES = mount_injection.c lxctest.h +lxc_test_utils_SOURCES = lxc-test-utils.c lxctest.h AM_CFLAGS=-DLXCROOTFSMOUNT=\"$(LXCROOTFSMOUNT)\" \ - -DLXCPATH=\"$(LXCPATH)\" \ - -DLXC_GLOBAL_CONF=\"$(LXC_GLOBAL_CONF)\" \ - -DLXCINITDIR=\"$(LXCINITDIR)\" \ - -DLXC_DEFAULT_CONFIG=\"$(LXC_DEFAULT_CONFIG)\" \ - -DRUNTIME_PATH=\"$(RUNTIME_PATH)\" \ - -I $(top_srcdir)/src \ - -I $(top_srcdir)/src/lxc \ - -I $(top_srcdir)/src/lxc/bdev \ - -I $(top_srcdir)/src/lxc/cgroups \ - -I $(top_srcdir)/src/lxc/tools \ - -pthread + -DLXCPATH=\"$(LXCPATH)\" \ + -DLXC_GLOBAL_CONF=\"$(LXC_GLOBAL_CONF)\" \ + -DLXCINITDIR=\"$(LXCINITDIR)\" \ + -DLXC_DEFAULT_CONFIG=\"$(LXC_DEFAULT_CONFIG)\" \ + -DRUNTIME_PATH=\"$(RUNTIME_PATH)\" \ + -I $(top_srcdir)/src \ + -I $(top_srcdir)/src/lxc \ + -I $(top_srcdir)/src/lxc/bdev \ + -I $(top_srcdir)/src/lxc/cgroups \ + -I $(top_srcdir)/src/lxc/tools \ + -pthread if ENABLE_APPARMOR AM_CFLAGS += -DHAVE_APPARMOR @@ -57,85 +57,105 @@ if ENABLE_SELINUX AM_CFLAGS += -DHAVE_SELINUX endif -bin_PROGRAMS = lxc-test-containertests lxc-test-locktests lxc-test-startone \ - lxc-test-destroytest lxc-test-saveconfig lxc-test-createtest \ - lxc-test-shutdowntest lxc-test-get_item lxc-test-getkeys lxc-test-lxcpath \ - lxc-test-cgpath lxc-test-clonetest lxc-test-console lxc-test-console-log \ - lxc-test-snapshot lxc-test-concurrent lxc-test-may-control \ - lxc-test-reboot lxc-test-list lxc-test-attach lxc-test-device-add-remove \ - lxc-test-apparmor lxc-test-utils lxc-test-parse-config-file \ - lxc-test-config-jump-table lxc-test-shortlived \ - lxc-test-api-reboot lxc-test-state-server lxc-test-share-ns \ - lxc-test-criu-check-feature lxc-test-raw-clone \ - lxc-test-mount-injection lxc-test-basic +bin_PROGRAMS = lxc-test-api-reboot \ + lxc-test-apparmor \ + lxc-test-attach \ + lxc-test-basic \ + lxc-test-cgpath \ + lxc-test-clonetest \ + lxc-test-concurrent \ + lxc-test-config-jump-table \ + lxc-test-console \ + lxc-test-console-log \ + lxc-test-containertests \ + lxc-test-createtest \ + lxc-test-criu-check-feature \ + lxc-test-destroytest \ + lxc-test-device-add-remove \ + lxc-test-getkeys \ + lxc-test-get_item \ + lxc-test-list \ + lxc-test-locktests \ + lxc-test-lxcpath \ + lxc-test-may-control \ + lxc-test-mount-injection \ + lxc-test-parse-config-file \ + lxc-test-raw-clone \ + lxc-test-reboot \ + lxc-test-saveconfig \ + lxc-test-share-ns \ + lxc-test-shortlived \ + lxc-test-shutdowntest \ + lxc-test-snapshot \ + lxc-test-startone \ + lxc-test-state-server \ + lxc-test-utils bin_SCRIPTS = if ENABLE_TOOLS bin_SCRIPTS += lxc-test-automount \ - lxc-test-autostart \ - lxc-test-cloneconfig \ - lxc-test-createconfig \ - lxc-test-no-new-privs \ - lxc-test-rootfs + lxc-test-autostart \ + lxc-test-cloneconfig \ + lxc-test-createconfig \ + lxc-test-no-new-privs \ + lxc-test-rootfs if DISTRO_UBUNTU -bin_SCRIPTS += \ - lxc-test-lxc-attach \ - lxc-test-apparmor-mount \ - lxc-test-apparmor-generated \ - lxc-test-checkpoint-restore \ - lxc-test-snapdeps \ - lxc-test-symlink \ - lxc-test-unpriv \ - lxc-test-usernic +bin_SCRIPTS += lxc-test-lxc-attach \ + lxc-test-apparmor-mount \ + lxc-test-apparmor-generated \ + lxc-test-checkpoint-restore \ + lxc-test-snapdeps \ + lxc-test-symlink \ + lxc-test-unpriv \ + lxc-test-usernic endif endif endif -EXTRA_DIST = \ - basic.c \ - cgpath.c \ - clonetest.c \ - concurrent.c \ - config_jump_table.c \ - console.c \ - console_log.c \ - containertests.c \ - createtest.c \ - criu_check_feature.c \ - destroytest.c \ - device_add_remove.c \ - get_item.c \ - getkeys.c \ - list.c \ - locktests.c \ - lxcpath.c \ - lxc_raw_clone.c \ - lxc-test-lxc-attach \ - lxc-test-automount \ - lxc-test-rootfs \ - lxc-test-autostart \ - lxc-test-apparmor-mount \ - lxc-test-apparmor-generated \ - lxc-test-checkpoint-restore \ - lxc-test-cloneconfig \ - lxc-test-createconfig \ - lxc-test-no-new-privs \ - lxc-test-snapdeps \ - lxc-test-symlink \ - lxc-test-unpriv \ - lxc-test-utils.c \ - may_control.c \ - mount_injection.c \ - parse_config_file.c \ - saveconfig.c \ - shortlived.c \ - shutdowntest.c \ - snapshot.c \ - startone.c \ - state_server.c \ - share_ns.c +EXTRA_DIST = basic.c \ + cgpath.c \ + clonetest.c \ + concurrent.c \ + config_jump_table.c \ + console.c \ + console_log.c \ + containertests.c \ + createtest.c \ + criu_check_feature.c \ + destroytest.c \ + device_add_remove.c \ + get_item.c \ + getkeys.c \ + list.c \ + locktests.c \ + lxcpath.c \ + lxc_raw_clone.c \ + lxc-test-lxc-attach \ + lxc-test-automount \ + lxc-test-rootfs \ + lxc-test-autostart \ + lxc-test-apparmor-mount \ + lxc-test-apparmor-generated \ + lxc-test-checkpoint-restore \ + lxc-test-cloneconfig \ + lxc-test-createconfig \ + lxc-test-no-new-privs \ + lxc-test-snapdeps \ + lxc-test-symlink \ + lxc-test-unpriv \ + lxc-test-utils.c \ + may_control.c \ + mount_injection.c \ + parse_config_file.c \ + saveconfig.c \ + shortlived.c \ + shutdowntest.c \ + snapshot.c \ + startone.c \ + state_server.c \ + share_ns.c clean-local: rm -f lxc-test-utils-* From e8cd1208869322472467311ef4ccc4a236124a5a Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Sat, 25 Aug 2018 07:01:26 +0200 Subject: [PATCH 4/4] commands: ensure -1 is sent on EPIPE for init pid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian Brauner <[email protected]> Reported-by: Stéphane Graber <[email protected]> --- src/lxc/commands.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 63a8949a6..5aad2432d 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -376,7 +376,12 @@ pid_t lxc_cmd_get_init_pid(const char *name, const char *lxcpath) { int ret, stopped; struct lxc_cmd_rr cmd = { - .req = { .cmd = LXC_CMD_GET_INIT_PID }, + .req = { + .cmd = LXC_CMD_GET_INIT_PID + }, + .rsp = { + .data = INT_TO_PTR((int){-1}) + } }; ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
