]> git.proxmox.com Git - mirror_lxc.git/log
mirror_lxc.git
4 years agocgroups: use __do_free in cgfsng_attach()
Christian Brauner [Thu, 27 Jun 2019 12:27:39 +0000 (14:27 +0200)]
cgroups: use __do_free in cgfsng_attach()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agocgroups: simplify cgfsng_setup_limits()
Christian Brauner [Thu, 27 Jun 2019 12:26:38 +0000 (14:26 +0200)]
cgroups: simplify cgfsng_setup_limits()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agocgroups: move variables into tighter scope
Christian Brauner [Thu, 27 Jun 2019 12:26:14 +0000 (14:26 +0200)]
cgroups: move variables into tighter scope

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agocgroups: use __do_free
Christian Brauner [Thu, 27 Jun 2019 12:25:53 +0000 (14:25 +0200)]
cgroups: use __do_free

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3063 from lifeng68/fix_memory_leak
Christian Brauner [Thu, 27 Jun 2019 07:40:55 +0000 (09:40 +0200)]
Merge pull request #3063 from lifeng68/fix_memory_leak

cgfsng: fix memory leak in lxc_cpumask_to_cpulist

4 years agocgfsng: fix memory leak in lxc_cpumask_to_cpulist
LiFeng [Thu, 27 Jun 2019 03:54:27 +0000 (23:54 -0400)]
cgfsng: fix memory leak in lxc_cpumask_to_cpulist

Signed-off-by: LiFeng <lifeng68@huawei.com>
4 years agoMerge pull request #3056 from brauner/2019-06-20/cpuset
Stéphane Graber [Thu, 20 Jun 2019 17:54:12 +0000 (13:54 -0400)]
Merge pull request #3056 from brauner/2019-06-20/cpuset

cgfsng: write cpuset.mems of correct ancestor

4 years agocgfsng: write cpuset.mems of correct ancestor
Christian Brauner [Thu, 20 Jun 2019 17:37:09 +0000 (19:37 +0200)]
cgfsng: write cpuset.mems of correct ancestor

Reported-by: Free Ekanayaka <free.ekanayaka@canonical.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3052 from tanyifeng/fd_leak
Christian Brauner [Thu, 20 Jun 2019 09:33:41 +0000 (11:33 +0200)]
Merge pull request #3052 from tanyifeng/fd_leak

parse.c: fix fd leak from memfd_create

4 years agoparse.c: fix fd leak from memfd_create
t00416110 [Thu, 20 Jun 2019 20:26:59 +0000 (16:26 -0400)]
parse.c: fix fd leak from memfd_create

Signed-off-by: t00416110 <tanyifeng1@huawei.com>
4 years agoMerge pull request #3050 from hallyn/pkgconfig
Christian Brauner [Tue, 18 Jun 2019 19:09:28 +0000 (21:09 +0200)]
Merge pull request #3050 from hallyn/pkgconfig

lxc.pc.in: add libs.private for static linking

4 years agolxc.pc.in: add libs.private for static linking
Serge Hallyn [Mon, 17 Jun 2019 13:37:47 +0000 (08:37 -0500)]
lxc.pc.in: add libs.private for static linking

None of them seem to support pkg-config themselves, else we could add
them to Requires.private.

Signed-off-by: Serge Hallyn <shallyn@cisco.com>
4 years agoMerge pull request #3047 from Rachid-Koucha/patch-11
Christian Brauner [Sun, 16 Jun 2019 02:11:35 +0000 (04:11 +0200)]
Merge pull request #3047 from Rachid-Koucha/patch-11

Fixed file descriptor leak for network namespace

4 years agoFixed file descriptor leak for network namespace
Rachid Koucha [Sat, 15 Jun 2019 13:17:50 +0000 (15:17 +0200)]
Fixed file descriptor leak for network namespace

In privileged mode, the container startup looses a file descriptor for "handler->nsfd[LX_NS_NET]". At line 1782, we preserve the namespaces file descriptor (in privileged mode, the network namespace is also preserved) :
for (i = 0; i < LXC_NS_MAX; i++)
if (handler->ns_on_clone_flags & ns_info[i].clone_flag)
INFO("Cloned %s", ns_info[i].flag_name);

if (!lxc_try_preserve_namespaces(handler, handler->ns_on_clone_flags, handler->pid)) {
ERROR("Failed to preserve cloned namespaces for lxc.hook.stop");
goto out_delete_net;
}

Then at line 1830, we preserve one more time the network namespace :
ret = lxc_try_preserve_ns(handler->pid, "net");
if (ret < 0) {
if (ret != -EOPNOTSUPP) {
SYSERROR("Failed to preserve net namespace");
goto out_delete_net;
}
The latter overwrites the file descriptor already stored in handler->nsfd[LXC_NS_NET] at line 1786.

So, this fix checks that the entry is not already filled.

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoMerge pull request #3045 from hallyn/2019-06-13/openssl
Serge Hallyn [Sat, 15 Jun 2019 04:00:48 +0000 (23:00 -0500)]
Merge pull request #3045 from hallyn/2019-06-13/openssl

[RFC\ Switch from gnutls to openssl for sha1

4 years agoMerge pull request #3046 from brauner/lxc/master
Stéphane Graber [Fri, 14 Jun 2019 11:48:31 +0000 (07:48 -0400)]
Merge pull request #3046 from brauner/lxc/master

network: fix lxc_netdev_rename_by_index()

4 years agonetwork: fix lxc_netdev_rename_by_index()
Christian Brauner [Fri, 14 Jun 2019 10:39:20 +0000 (12:39 +0200)]
network: fix lxc_netdev_rename_by_index()

Return an error code when the name is invalid instead of pretending that things
are fine.

Closes #3044.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoSwitch from gnutls to openssl for sha1
Serge Hallyn [Fri, 14 Jun 2019 03:08:26 +0000 (03:08 +0000)]
Switch from gnutls to openssl for sha1

The reason for this is because openssl can be statically linked
against, gnutls cannot.

Signed-off-by: Serge Hallyn <shallyn@cisco.com>
4 years agoMerge pull request #3042 from tenforward/japanese
Christian Brauner [Thu, 13 Jun 2019 12:10:00 +0000 (14:10 +0200)]
Merge pull request #3042 from tenforward/japanese

doc: add a note about shared ns + LSMs to Japanese doc

4 years agodoc: add a note about shared ns + LSMs to Japanese doc
KATOH Yasufumi [Thu, 13 Jun 2019 12:05:24 +0000 (21:05 +0900)]
doc: add a note about shared ns + LSMs to Japanese doc

Update for commit 8de90384363fe01f5258d36724dd3eae55918b5b

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
4 years agoMerge pull request #3041 from brauner/2019-06-12/seccomp_notify_fixes
Stéphane Graber [Wed, 12 Jun 2019 12:18:24 +0000 (08:18 -0400)]
Merge pull request #3041 from brauner/2019-06-12/seccomp_notify_fixes

seccomp: do not set SECCOMP_FILTER_FLAG_NEW_LISTENER

4 years agoMerge pull request #3040 from Rachid-Koucha/patch-11
Christian Brauner [Wed, 12 Jun 2019 12:15:39 +0000 (14:15 +0200)]
Merge pull request #3040 from Rachid-Koucha/patch-11

Centralize hook names

4 years agoseccomp: do not set SECCOMP_FILTER_FLAG_NEW_LISTENER
Christian Brauner [Wed, 12 Jun 2019 11:42:25 +0000 (13:42 +0200)]
seccomp: do not set SECCOMP_FILTER_FLAG_NEW_LISTENER

Do not set SECCOMP_FILTER_FLAG_NEW_LISTENER as seccomp attribute.
Prior to libseccomp merging support for SECCOMP_RET_USER_NOTIF there was a
libseccomp specific attribute that needed to be set before
SECCOMP_RET_USER_NOTIF could be used. This has been removed.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoCentralize hook names
Rachid Koucha [Wed, 12 Jun 2019 06:36:40 +0000 (08:36 +0200)]
Centralize hook names

The hook string names must not be repeated in the source code to facilitate future changes

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoMerge pull request #3039 from brauner/master
Stéphane Graber [Tue, 11 Jun 2019 22:11:32 +0000 (18:11 -0400)]
Merge pull request #3039 from brauner/master

seccomp: add ifdefine for SECCOMP_FILTER_FLAG_NEW_LISTENER

4 years agoseccomp: add ifdefine for SECCOMP_FILTER_FLAG_NEW_LISTENER
Christian Brauner [Tue, 11 Jun 2019 22:02:49 +0000 (00:02 +0200)]
seccomp: add ifdefine for SECCOMP_FILTER_FLAG_NEW_LISTENER

So that we can deal with older kernels.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3038 from brauner/master
Stéphane Graber [Tue, 11 Jun 2019 21:53:05 +0000 (17:53 -0400)]
Merge pull request #3038 from brauner/master

seccomp: s/SCMP_FLTATR_NEW_LISTENER/SECCOMP_FILTER_FLAG_NEW_LISTENER/g

4 years agoseccomp: s/SCMP_FLTATR_NEW_LISTENER/SECCOMP_FILTER_FLAG_NEW_LISTENER/g
Christian Brauner [Tue, 11 Jun 2019 21:51:34 +0000 (23:51 +0200)]
seccomp: s/SCMP_FLTATR_NEW_LISTENER/SECCOMP_FILTER_FLAG_NEW_LISTENER/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3037 from brauner/master
Stéphane Graber [Tue, 11 Jun 2019 21:43:10 +0000 (17:43 -0400)]
Merge pull request #3037 from brauner/master

seccomp: align with upstream libseccomp

4 years agoseccomp: s/HAVE_DECL_SECCOMP_NOTIF_GET_FD/HAVE_DECL_SECCOMP_NOTIFY_FD/g
Christian Brauner [Tue, 11 Jun 2019 21:36:56 +0000 (23:36 +0200)]
seccomp: s/HAVE_DECL_SECCOMP_NOTIF_GET_FD/HAVE_DECL_SECCOMP_NOTIFY_FD/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: /sseccomp_notif_free/seccomp_notify_free/g
Christian Brauner [Tue, 11 Jun 2019 21:34:33 +0000 (23:34 +0200)]
seccomp: /sseccomp_notif_free/seccomp_notify_free/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: s/seccomp_notif_alloc/seccomp_notify_alloc/g
Christian Brauner [Tue, 11 Jun 2019 21:33:22 +0000 (23:33 +0200)]
seccomp: s/seccomp_notif_alloc/seccomp_notify_alloc/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: s/seccomp_notif_id_valid/seccomp_notify_id_valid/g
Christian Brauner [Tue, 11 Jun 2019 21:32:19 +0000 (23:32 +0200)]
seccomp: s/seccomp_notif_id_valid/seccomp_notify_id_valid/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: s/seccomp_notif_send_resp/seccomp_notify_respond/g
Christian Brauner [Tue, 11 Jun 2019 21:31:12 +0000 (23:31 +0200)]
seccomp: s/seccomp_notif_send_resp/seccomp_notify_respond/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: s/seccomp_notif_receive/seccomp_notify_receive/g
Christian Brauner [Tue, 11 Jun 2019 21:29:39 +0000 (23:29 +0200)]
seccomp: s/seccomp_notif_receive/seccomp_notify_receive/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: s/seccomp_notif_get_fd/seccomp_notify_fd/g
Christian Brauner [Tue, 11 Jun 2019 21:27:33 +0000 (23:27 +0200)]
seccomp: s/seccomp_notif_get_fd/seccomp_notify_fd/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: s/SCMP_ACT_USER_NOTIF/SCMP_ACT_NOTIFY/g
Christian Brauner [Tue, 11 Jun 2019 21:25:44 +0000 (23:25 +0200)]
seccomp: s/SCMP_ACT_USER_NOTIF/SCMP_ACT_NOTIFY/g

Align with upstream libseccomp.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3032 from promlow/lxcbasename_fix
Christian Brauner [Fri, 7 Jun 2019 00:35:39 +0000 (02:35 +0200)]
Merge pull request #3032 from promlow/lxcbasename_fix

proposed fix for #2892 - fix lxcbasename in lxc/lxccontainer.c

4 years agoMerge pull request #3034 from brauner/2019-06-05/boot_id
Stéphane Graber [Thu, 6 Jun 2019 10:57:11 +0000 (12:57 +0200)]
Merge pull request #3034 from brauner/2019-06-05/boot_id

start: generate new boot id on container start

4 years agostart: generate new boot id on container start
Christian Brauner [Wed, 5 Jun 2019 21:43:53 +0000 (23:43 +0200)]
start: generate new boot id on container start

Closes #3027.

BugLink: https://bugs.launchpad.net/bugs/1831258
Cc: Dimitri John Ledkov <xnox@ubuntu.com>
Cc: Scott Moser <smoser@ubuntu.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoproposed fix for #2892 - fix lxcbasename in lxc/lxccontainer.c
Paul Romlow [Wed, 5 Jun 2019 18:28:21 +0000 (13:28 -0500)]
proposed fix for #2892 - fix lxcbasename in lxc/lxccontainer.c

Signed-off-by: Paul Romlow <paul@romlow.com>
4 years agoMerge pull request #3029 from brauner/2019-06-05/fix_offline_cpus
Stéphane Graber [Wed, 5 Jun 2019 11:09:42 +0000 (13:09 +0200)]
Merge pull request #3029 from brauner/2019-06-05/fix_offline_cpus

cgroups: prevent segfault

4 years agoMerge pull request #3031 from Rachid-Koucha/patch-11
Christian Brauner [Wed, 5 Jun 2019 11:08:39 +0000 (13:08 +0200)]
Merge pull request #3031 from Rachid-Koucha/patch-11

Make /tmp accessible to any user

4 years agoMake /tmp accessible to any user
Rachid Koucha [Wed, 5 Jun 2019 11:04:11 +0000 (13:04 +0200)]
Make /tmp accessible to any user

/tmp created with "rwxrwxrwt" mode

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agocgroups: prevent segfault
Christian Brauner [Wed, 5 Jun 2019 07:27:45 +0000 (09:27 +0200)]
cgroups: prevent segfault

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3028 from lifeng68/fix_memory_leak
Christian Brauner [Wed, 5 Jun 2019 04:56:17 +0000 (06:56 +0200)]
Merge pull request #3028 from lifeng68/fix_memory_leak

start: fix handler memory leak at lxc_init failed

4 years agostart: fix handler memory leak at lxc_init failed
LiFeng [Wed, 5 Jun 2019 04:44:17 +0000 (00:44 -0400)]
start: fix handler memory leak at lxc_init failed

Signed-off-by: LiFeng <lifeng68@huawei.com>
4 years agoMerge pull request #3026 from xmcqueen/master
Christian Brauner [Tue, 4 Jun 2019 14:11:42 +0000 (16:11 +0200)]
Merge pull request #3026 from xmcqueen/master

lxc_usernsexec: continuing after unshare fails leads to confusing and…

4 years agolxc_usernsexec: continuing after unshare fails leads to confusing and misleading...
Brian McQueen [Tue, 4 Jun 2019 13:46:37 +0000 (06:46 -0700)]
lxc_usernsexec: continuing after unshare fails leads to confusing and misleading error messages

Signed-off-by: Brian McQueen <bmcqueen@linkedin.com>
4 years agoMerge pull request #3014 from brauner/2019-05-24/cgroups_handle_offline_cpus
Stéphane Graber [Tue, 4 Jun 2019 11:52:07 +0000 (13:52 +0200)]
Merge pull request #3014 from brauner/2019-05-24/cgroups_handle_offline_cpus

cgroups: handle offline cpus in v1 hierarchy

4 years agoMerge pull request #3024 from avkvl/fix_groups_with_a_lot_of_members
Christian Brauner [Tue, 4 Jun 2019 08:49:57 +0000 (10:49 +0200)]
Merge pull request #3024 from avkvl/fix_groups_with_a_lot_of_members

lxc-user-net: Failed to convert string " Failed to get group name" to integer

4 years agogetgrgid_r fails with ERANGE if buffer is too small. Retry with a larger buffer.
Alexander Kriventsov [Mon, 3 Jun 2019 15:11:56 +0000 (18:11 +0300)]
getgrgid_r fails with ERANGE if buffer is too small. Retry with a larger buffer.

Signed-off-by: Alexander Kriventsov <akriventsov@nic.ru>
4 years agoMerge pull request #3018 from tych0/comment-stack-size
Christian Brauner [Wed, 29 May 2019 15:38:23 +0000 (17:38 +0200)]
Merge pull request #3018 from tych0/comment-stack-size

lxc_clone: add a comment about stack size

4 years agolxc_clone: add a comment about stack size
Tycho Andersen [Wed, 29 May 2019 15:36:51 +0000 (09:36 -0600)]
lxc_clone: add a comment about stack size

Signed-off-by: Tycho Andersen <tycho@tycho.ws>
4 years agoMerge pull request #2987 from tych0/pass-zero-to-clone
Christian Brauner [Wed, 29 May 2019 15:14:00 +0000 (17:14 +0200)]
Merge pull request #2987 from tych0/pass-zero-to-clone

Pass zero to clone

4 years agolxc_clone: bump stack size to 8MB
Tycho Andersen [Wed, 29 May 2019 14:47:35 +0000 (08:47 -0600)]
lxc_clone: bump stack size to 8MB

This is the default thread size for glibc, so it is reasonable to match
that when we clone().

Mostly this is a science experiment suggested by brauner, and who doesn't
love science?

Signed-off-by: Tycho Andersen <tycho@tycho.ws>
4 years agoMerge pull request #3015 from avkvl/issue-2765
Christian Brauner [Tue, 28 May 2019 14:45:36 +0000 (16:45 +0200)]
Merge pull request #3015 from avkvl/issue-2765

fix issue 2765

4 years agofix issue 2765
Alexander Kriventsov [Tue, 28 May 2019 12:58:51 +0000 (15:58 +0300)]
fix issue 2765

Signed-off-by: Alexander Kriventsov <akriventsov@nic.ru>
4 years agocgroups: handle offline cpus in v1 hierarchy
Christian Brauner [Fri, 24 May 2019 13:59:57 +0000 (15:59 +0200)]
cgroups: handle offline cpus in v1 hierarchy

Handle offline cpus in v1 hierarchy.

In addition to isolated cpus we also need to account for offline cpus when our
ancestor cgroup is the root cgroup and we have not been initialized yet.

Closes #2953.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3011 from brauner/2019-05-21/android_the_bane_of_my_existence
Stéphane Graber [Tue, 21 May 2019 14:15:08 +0000 (10:15 -0400)]
Merge pull request #3011 from brauner/2019-05-21/android_the_bane_of_my_existence

configure: remove additional comma

4 years agoconfigure: remove additional comma
Christian Brauner [Tue, 21 May 2019 13:58:03 +0000 (15:58 +0200)]
configure: remove additional comma

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3010 from brauner/2019-05-17/bugfixes
Stéphane Graber [Fri, 17 May 2019 07:10:47 +0000 (09:10 +0200)]
Merge pull request #3010 from brauner/2019-05-17/bugfixes

lxccontainer: cleanup attach functions

4 years agolxccontainer: cleanup attach functions
Christian Brauner [Fri, 17 May 2019 05:50:45 +0000 (07:50 +0200)]
lxccontainer: cleanup attach functions

Specifically, refloat function arguments and remove useless comments.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3009 from brauner/2019-05-16/rework_attach
Stéphane Graber [Thu, 16 May 2019 17:33:41 +0000 (19:33 +0200)]
Merge pull request #3009 from brauner/2019-05-16/rework_attach

attach: do not reload container

4 years agoattach: do not reload container
Christian Brauner [Thu, 16 May 2019 13:29:41 +0000 (15:29 +0200)]
attach: do not reload container

Let lxc_attach() reuse the already initialized container.

Closes https://github.com/lxc/lxd/issues/5755.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3006 from tomponline/tp-phys-downhook
Christian Brauner [Thu, 16 May 2019 08:11:42 +0000 (10:11 +0200)]
Merge pull request #3006 from tomponline/tp-phys-downhook

network: Fixes bug that stopped down hook from running for phys netdevs

4 years agonetwork: Fixes bug that stopped down hook from running for phys netdevs
Thomas Parrott [Wed, 15 May 2019 16:09:47 +0000 (17:09 +0100)]
network: Fixes bug that stopped down hook from running for phys netdevs

Signed-off-by: Thomas Parrott <thomas.parrott@canonical.com>
4 years agoMerge pull request #3005 from tomponline/tp-phys-ns-restore
Christian Brauner [Wed, 15 May 2019 15:40:52 +0000 (17:40 +0200)]
Merge pull request #3005 from tomponline/tp-phys-ns-restore

network: move phys netdevs back to monitor's net ns rather than pid 1's

4 years agonetwork: move phys netdevs back to monitor's net ns rather than pid 1's
Thomas Parrott [Wed, 15 May 2019 14:54:12 +0000 (15:54 +0100)]
network: move phys netdevs back to monitor's net ns rather than pid 1's

Updates lxc_restore_phys_nics_to_netns() to move phys netdevs back to the monitor's network namespace rather than the previously hardcoded PID 1 net ns.

This is to fix instances where LXC is started inside a net ns different from PID 1 and physical devices are moved back to a different net ns when the container is shutdown than the net ns than where the container was started from.

Signed-off-by: Thomas Parrott <thomas.parrott@canonical.com>
4 years agoMerge pull request #3004 from brauner/master
Stéphane Graber [Wed, 15 May 2019 14:19:19 +0000 (16:19 +0200)]
Merge pull request #3004 from brauner/master

configure: handle checks when cross-compiling

4 years agolxc_clone: get rid of some indirection
Tycho Andersen [Thu, 9 May 2019 18:18:10 +0000 (14:18 -0400)]
lxc_clone: get rid of some indirection

We have a do_clone(), which just calls a void f(void *) that it gets
passed. We build up a struct consisting of two args that are just the
actual arg and actual function. Let's just have the syscall do this for us.

Signed-off-by: Tycho Andersen <tycho@tycho.ws>
4 years agodoc: add a little note about shared ns + LSMs
Tycho Andersen [Thu, 9 May 2019 18:13:40 +0000 (14:13 -0400)]
doc: add a little note about shared ns + LSMs

We should add a little not about the race in the previous patch.

Signed-off-by: Tycho Andersen <tycho@tycho.ws>
4 years agolxc_clone: pass non-stack allocated stack to clone
Tycho Andersen [Thu, 9 May 2019 17:52:30 +0000 (13:52 -0400)]
lxc_clone: pass non-stack allocated stack to clone

There are two problems with this code:

1. The math is wrong. We allocate a char *foo[__LXC_STACK_SIZE]; which
   means it's really sizeof(char *) * __LXC_STACK_SIZE, instead of just
   __LXC_STACK SIZE.

2. We can't actually allocate it on our stack. When we use CLONE_VM (which
   we do in the shared ns case) that means that the new thread is just
   running one page lower on the stack, but anything that allocates a page
   on the stack may clobber data. This is a pretty short race window since
   we just do the shared ns stuff and then do a clone without CLONE_VM.

However, it does point out an interesting possible privilege escalation if
things aren't configured correctly: do_share_ns() sets up namespaces while
it shares the address space of the task that spawned it; once it enters the
pid ns of the thing it's sharing with, the thing it's sharing with can
ptrace it and write stuff into the host's address space. Since the function
that does the clone() is lxc_spawn(), it has a struct cgroup_ops* on the
stack, which itself has function pointers called later in the function, so
it's possible to allocate shellcode in the address space of the host and
run it fairly easily.

ASLR doesn't mitigate this since we know exactly the stack offsets; however
this patch has the kernel allocate a new stack, which will help. Of course,
the attacker could just check /proc/pid/maps to find the location of the
stack, but they'd still have to guess where to write stuff in.

The thing that does prevent this is the default configuration of apparmor.
Since the apparmor profile is set in the second clone, and apparmor
prevents ptracing things under a different profile, attackers confined by
apparmor can't do this. However, if users are using a custom configuration
with shared namespaces, care must be taken to avoid this race.

Shared namespaces aren't widely used now, so perhaps this isn't a problem,
but with the advent of crio-lxc for k8s, this functionality will be used
more.

Signed-off-by: Tycho Andersen <tycho@tycho.ws>
4 years agoconfigure: handle checks when cross-compiling
Christian Brauner [Wed, 15 May 2019 13:44:36 +0000 (15:44 +0200)]
configure: handle checks when cross-compiling

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #3001 from Rachid-Koucha/patch-11
Christian Brauner [Mon, 13 May 2019 13:57:29 +0000 (15:57 +0200)]
Merge pull request #3001 from Rachid-Koucha/patch-11

Use %m instead of strerror() when available

4 years agoError prone semicolon
Rachid Koucha [Mon, 13 May 2019 12:57:02 +0000 (14:57 +0200)]
Error prone semicolon

Suppressed error prone semicolon in SYSTRACE() macro.

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoUse %m instead of strerror() when available
Rachid Koucha [Mon, 13 May 2019 11:21:14 +0000 (13:21 +0200)]
Use %m instead of strerror() when available

Use %m under HAVE_M_FORMAT instead of strerror()

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoMerge pull request #2999 from rikardfalkeborn/fix-realloc-memleak-proctitle
Christian Brauner [Mon, 13 May 2019 11:19:55 +0000 (13:19 +0200)]
Merge pull request #2999 from rikardfalkeborn/fix-realloc-memleak-proctitle

initutils: Fix memleak on realloc failure

4 years agoMerge pull request #2998 from rikardfalkeborn/fix-returning-non-bool
Christian Brauner [Mon, 13 May 2019 11:19:22 +0000 (13:19 +0200)]
Merge pull request #2998 from rikardfalkeborn/fix-returning-non-bool

Fix returning -1 in functions with return type bool

4 years agoMerge pull request #3000 from Rachid-Koucha/patch-11
Christian Brauner [Mon, 13 May 2019 11:18:54 +0000 (13:18 +0200)]
Merge pull request #3000 from Rachid-Koucha/patch-11

Config: check for %m availability

4 years agoConfig: check for %m availability
Rachid Koucha [Mon, 13 May 2019 11:13:18 +0000 (13:13 +0200)]
Config: check for %m availability

GLIBC supports %m to avoid calling strerror(). Using it saves some code space.
==> This check will define HAVE_M_FORMAT to be use wherever possible (e.g. log.h)

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoinitutils: Fix memleak on realloc failure
Rikard Falkeborn [Sun, 12 May 2019 00:22:15 +0000 (02:22 +0200)]
initutils: Fix memleak on realloc failure

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
4 years agozfs: Fix return value on zfs_snapshot error
Rikard Falkeborn [Sat, 11 May 2019 23:47:56 +0000 (01:47 +0200)]
zfs: Fix return value on zfs_snapshot error

Returning -1 in a function with return type bool is the same as
returning true. Change to return false to indicate error properly.

Detected with cppcheck.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
4 years agolvm: Fix return value if lvm_create_clone fails
Rikard Falkeborn [Sat, 11 May 2019 23:46:27 +0000 (01:46 +0200)]
lvm: Fix return value if lvm_create_clone fails

Returning -1 in a function with return type bool is the same as
returning true. Change to return false to indicate error properly.

Detected with cppcheck.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
4 years agocriu: Remove unnecessary return after _exit()
Rikard Falkeborn [Sat, 11 May 2019 23:39:51 +0000 (01:39 +0200)]
criu: Remove unnecessary return after _exit()

Since _exit() will terminate, the return statement is dead code. Also,
returning -1 from a function with bool as return type is confusing.

Detected with cppcheck.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
4 years agoMerge pull request #2997 from rst0git/criu-v-option
Christian Brauner [Fri, 10 May 2019 21:47:28 +0000 (23:47 +0200)]
Merge pull request #2997 from rst0git/criu-v-option

criu: Use -v4 instead of -vvvvvv

4 years agocriu: Use -v4 instead of -vvvvvv
Radostin Stoyanov [Fri, 10 May 2019 21:25:54 +0000 (22:25 +0100)]
criu: Use -v4 instead of -vvvvvv

CRIU has only 4 levels of verbosity (errors, warnings, info, debug).
Thus, using `-v4` is more appropriate.

https://criu.org/Logging

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
4 years agoMerge pull request #2993 from Rachid-Koucha/patch-9
Christian Brauner [Fri, 10 May 2019 19:35:56 +0000 (21:35 +0200)]
Merge pull request #2993 from Rachid-Koucha/patch-9

New --bbpath option and unecessary --rootfs checks

4 years agoOption --busybox-path instead of --bbpath
Rachid Koucha [Fri, 10 May 2019 19:28:35 +0000 (21:28 +0200)]
Option --busybox-path instead of --bbpath

As suggested during the review.

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoMerge pull request #2996 from brauner/Rachid-Koucha-patch-10
Christian Brauner [Fri, 10 May 2019 19:20:20 +0000 (21:20 +0200)]
Merge pull request #2996 from brauner/Rachid-Koucha-patch-10

lxccontainer: do not display if missing privileges

4 years agolxccontainer: do not display if missing privileges
Rachid Koucha [Fri, 10 May 2019 16:56:12 +0000 (18:56 +0200)]
lxccontainer: do not display if missing privileges

lxc-ls without root privileges on privileged containers should not display
information. In lxc_container_new(), ongoing_create()'s result is not checked
for all possible returned values. Hence, an unprivileged user can send command
messages to the container's monitor. For example:

$ lxc-ls -P /.../tests -f
NAME     STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
ctr -     0         -      -    -    false
$ sudo lxc-ls -P /.../tests -f
NAME     STATE   AUTOSTART GROUPS IPV4      IPV6 UNPRIVILEGED
ctr RUNNING 0         -      10.0.3.51 -    false

After this change:

$ lxc-ls -P /.../tests -f      <-------- No more display without root privileges
$ sudo lxc-ls -P /.../tests -f
NAME     STATE   AUTOSTART GROUPS IPV4      IPV6 UNPRIVILEGED
ctr RUNNING 0         -      10.0.3.37 -    false
$

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoNew --bbpath option and unecessary --rootfs checks
Rachid Koucha [Fri, 10 May 2019 15:01:13 +0000 (17:01 +0200)]
New --bbpath option and unecessary --rootfs checks

. Add the "--bbpath" option to pass an alternate busybox pathname instead of the one found from ${PATH}.
. Take this opportunity to add some formatting in the usage display
. As a try is done to pick rootfs from the config file and set it to ${path}/rootfs, it is unnecessary to make it mandatory

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoMerge pull request #2992 from brauner/2019-05-10/coding_style_update
Stéphane Graber [Fri, 10 May 2019 12:36:56 +0000 (08:36 -0400)]
Merge pull request #2992 from brauner/2019-05-10/coding_style_update

coding style: update

4 years agocoding style: update
Christian Brauner [Fri, 10 May 2019 11:15:25 +0000 (13:15 +0200)]
coding style: update

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMerge pull request #2985 from tomponline/tp-mtu
Christian Brauner [Fri, 10 May 2019 07:30:35 +0000 (09:30 +0200)]
Merge pull request #2985 from tomponline/tp-mtu

network: Adds mtu support for phys and macvlan types

4 years agoMerge pull request #2989 from Rachid-Koucha/patch-8
Christian Brauner [Fri, 10 May 2019 06:48:59 +0000 (08:48 +0200)]
Merge pull request #2989 from Rachid-Koucha/patch-8

Redirect error messages to stderr

4 years agoRedirect error messages to stderr
Rachid Koucha [Fri, 10 May 2019 05:39:03 +0000 (07:39 +0200)]
Redirect error messages to stderr

Some error messages were not redirected to stderr.
Moreover, do "exit 0" instead of "exit 1" when "help" option is passed.

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
4 years agoMerge pull request #2986 from brauner/2019-05-09/clone_pidfd
Stéphane Graber [Thu, 9 May 2019 19:19:58 +0000 (15:19 -0400)]
Merge pull request #2986 from brauner/2019-05-09/clone_pidfd

start: use CLONE_PIDFD

4 years agostart: use CLONE_PIDFD
Christian Brauner [Thu, 9 May 2019 17:40:23 +0000 (19:40 +0200)]
start: use CLONE_PIDFD

Use CLONE_PIDFD when possible.

Note the clone() syscall ignores unknown flags which is usually a design
mistake. However, for us this bug is a feature since we can just pass the flag
along and see whether the kernel has given us a pidfd.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoapi: Adds the network_phys_macvlan_mtu extension
Thomas Parrott [Thu, 9 May 2019 15:47:42 +0000 (16:47 +0100)]
api: Adds the network_phys_macvlan_mtu extension

This will allow LXD to check for custom MTU support for phys and macvlan devices.

Signed-off-by: Thomas Parrott <thomas.parrott@canonical.com>