]> git.ipfire.org Git - thirdparty/lxc.git/log
thirdparty/lxc.git
9 years agolxc-test-symlink: add a test using absolute symlink
Serge Hallyn [Wed, 30 Sep 2015 18:01:01 +0000 (18:01 +0000)] 
lxc-test-symlink: add a test using absolute symlink

This would have caught the regression last night.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoseccomp: add aarch64 support
Bogdan Purcareata [Thu, 1 Oct 2015 08:19:37 +0000 (08:19 +0000)] 
seccomp: add aarch64 support

Enable aarch64 seccomp support for LXC containers running on ARM64
architectures. Tested with libseccomp 2.2.0 and the default seccomp
policy example files delivered with the LXC package.

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-start-ephemeral: Parse passwd directly
Colin Watson [Wed, 30 Sep 2015 12:37:10 +0000 (13:37 +0100)] 
lxc-start-ephemeral: Parse passwd directly

On Ubuntu 15.04, lxc-start-ephemeral's call to pwd.getpwnam always
fails.  While I haven't been able to prove it or track down an exact
cause, I strongly suspect that glibc does not guarantee that you can
call NSS functions after a context switch without re-execing.  (Running
"id root" in a subprocess from the same point works fine.)

It's safer to use getent to extract the relevant line from the passwd
file and parse it directly.

Signed-off-by: Colin Watson <cjwatson@ubuntu.com>
9 years agoDefine O_PATH and O_NOFOLLOW for Android
Stéphane Graber [Tue, 29 Sep 2015 18:59:28 +0000 (14:59 -0400)] 
Define O_PATH and O_NOFOLLOW for Android

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-alpine: use getopt to parse options
Kaarle Ritvanen [Mon, 28 Sep 2015 11:51:21 +0000 (14:51 +0300)] 
lxc-alpine: use getopt to parse options

Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-alpine: avoid GNU BRE extensions for better portability
Kaarle Ritvanen [Mon, 28 Sep 2015 11:49:14 +0000 (14:49 +0300)] 
lxc-alpine: avoid GNU BRE extensions for better portability

Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoFree allocated memory on failure (v2)
Christian Brauner [Mon, 28 Sep 2015 11:33:33 +0000 (13:33 +0200)] 
Free allocated memory on failure (v2)

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoAdd CAP_BLOCK_SUSPEND
Christian Brauner [Sun, 27 Sep 2015 10:27:07 +0000 (12:27 +0200)] 
Add CAP_BLOCK_SUSPEND

CAP_BLOCK_SUSPEND (since Linux 3.5)
    Employ features that can block system suspend (epoll(7) EPOLLWAKEUP, /proc/sys/wake_lock).

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoAdd CAP_AUDIT_READ
Christian Brauner [Sun, 27 Sep 2015 10:16:54 +0000 (12:16 +0200)] 
Add CAP_AUDIT_READ

CAP_AUDIT_READ (since Linux 3.16)
    Allow reading the audit log via a multicast netlink socket.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-debian: We should only check the kernel architecture.
Stéphane Graber [Mon, 28 Sep 2015 19:43:10 +0000 (15:43 -0400)] 
lxc-debian: We should only check the kernel architecture.

The dpkg architecture isn't relevant to LXC, only the kernel arch is.

Signed-off-by: Gergely Szasz <szaszg@hu.inter.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocoverity: drop second (redundant) block
Serge Hallyn [Sat, 26 Sep 2015 19:44:40 +0000 (14:44 -0500)] 
coverity: drop second (redundant) block

Don't proceed to try the mount if we failed to create the
target if it didn't exist.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-test-symlink: Background the containers
Stéphane Graber [Tue, 29 Sep 2015 16:35:25 +0000 (12:35 -0400)] 
lxc-test-symlink: Background the containers

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoCVE-2015-1335: Protect container mounts against symlinks
Serge Hallyn [Mon, 31 Aug 2015 17:57:20 +0000 (12:57 -0500)] 
CVE-2015-1335: Protect container mounts against symlinks

When a container starts up, lxc sets up the container's inital fstree
by doing a bunch of mounting, guided by the container configuration
file.  The container config is owned by the admin or user on the host,
so we do not try to guard against bad entries.  However, since the
mount target is in the container, it's possible that the container admin
could divert the mount with symbolic links.  This could bypass proper
container startup (i.e. confinement of a root-owned container by the
restrictive apparmor policy, by diverting the required write to
/proc/self/attr/current), or bypass the (path-based) apparmor policy
by diverting, say, /proc to /mnt in the container.

To prevent this,

1. do not allow mounts to paths containing symbolic links

2. do not allow bind mounts from relative paths containing symbolic
links.

Details:

Define safe_mount which ensures that the container has not inserted any
symbolic links into any mount targets for mounts to be done during
container setup.

The host's mount path may contain symbolic links.  As it is under the
control of the administrator, that's ok.  So safe_mount begins the check
for symbolic links after the rootfs->mount, by opening that directory.

It opens each directory along the path using openat() relative to the
parent directory using O_NOFOLLOW.  When the target is reached, it
mounts onto /proc/self/fd/<targetfd>.

Use safe_mount() in mount_entry(), when mounting container proc,
and when needed.  In particular, safe_mount() need not be used in
any case where:

1. the mount is done in the container's namespace
2. the mount is for the container's rootfs
3. the mount is relative to a tmpfs or proc/sysfs which we have
   just safe_mount()ed ourselves

Since we were using proc/net as a temporary placeholder for /proc/sys/net
during container startup, and proc/net is a symbolic link, use proc/tty
instead.

Update the lxc.container.conf manpage with details about the new
restrictions.

Finally, add a testcase to test some symbolic link possibilities.

Reported-by: Roman Fiedler
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
ACked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocmds: fix abstract socket length problem
Tycho Andersen [Fri, 25 Sep 2015 22:45:59 +0000 (16:45 -0600)] 
cmds: fix abstract socket length problem

Since we want to use null-terminated abstract sockets, let's compute the length
of them correctly.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodoc: Add the description of common options in lxc-destroy(1)
KATOH Yasufumi [Fri, 28 Aug 2015 07:51:06 +0000 (16:51 +0900)] 
doc: Add the description of common options in lxc-destroy(1)

* Remove '-P' option, and common options (including '-P' option)
* Add long option for '-f'
* Improve Japanese translation

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoFix indentation
Stéphane Graber [Mon, 21 Sep 2015 20:25:47 +0000 (16:25 -0400)] 
Fix indentation

I've noticed that a bunch of the code we've included over the past few
weeks has been using 8-spaces rather than tabs, making it all very hard
to read depending on your tabstop setting.

This commit attempts to revert all of that back to proper tabs and fix a
few more cases I've noticed here and there.

No functional changes are included in this commit.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoovl_rsync: make sure to umount
Serge Hallyn [Mon, 21 Sep 2015 19:33:23 +0000 (19:33 +0000)] 
ovl_rsync: make sure to umount

Otherwise the kernel will umount when it gets around to it, but
that on lxc_destroy we may race with it and fail the rmdir of
the overmounted (BUSY) rootfs.

This makes lxc-test-snapshot pass for me again.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agooverlayfs_mount: create delta dir if it doesn't exist
Serge Hallyn [Mon, 21 Sep 2015 17:09:25 +0000 (17:09 +0000)] 
overlayfs_mount: create delta dir if it doesn't exist

(This *should* fix the lxc-test-snapshot testcase, but doesn't seem
to by itself.)

If it doesn't exist, we may as well start with an empty one.  This
is needed when creating an overlayfs snapshot.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc_rmdir_onedev: don't fail if path doesn't exist
Serge Hallyn [Mon, 21 Sep 2015 17:01:10 +0000 (17:01 +0000)] 
lxc_rmdir_onedev: don't fail if path doesn't exist

We're asked to delete it, don't fail if it doesn't exist.

This stops lxc-destroy from failing when the container isn't fully
built.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-checkconfig: add some more config options
Tycho Andersen [Fri, 11 Sep 2015 18:45:33 +0000 (12:45 -0600)] 
lxc-checkconfig: add some more config options

Here's some more config options that we do actually require to be able to
boot containers.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agooverlayfs_clone: rsync the mounted rootfs
Serge Hallyn [Thu, 17 Sep 2015 17:26:12 +0000 (17:26 +0000)] 
overlayfs_clone: rsync the mounted rootfs

Closes #655

We can't rsync the delta as unpriv user because we can't create
the chardevs representing a whiteout.  We can however rsync the
rootfs and have the kernel create the whiteouts for us.

do_rsync: pass --delete

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoFix reallocation calculation
Christian Brauner [Mon, 21 Sep 2015 07:53:43 +0000 (09:53 +0200)] 
Fix reallocation calculation

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoAdd a nesting.conf which can be included to support nesting containers (v2)
Serge Hallyn [Thu, 3 Sep 2015 20:24:06 +0000 (20:24 +0000)] 
Add a nesting.conf which can be included to support nesting containers (v2)

Newer kernels have added a new restriction:  if /proc or /sys on the
host has files or non-empty directories which are over-mounted, and
there is no /proc which fully visible, then it assumes there is a
"security" reason for this.  It prevents anyone in a non-initial user
namespace from creating a new proc or sysfs mount.

To work around this, this patch adds a new 'nesting.conf' which can be
lxc.include'd from a container configuration file.  It adds a
non-overmounted mount of /proc and /sys under /dev/.lxc, so that the
kernel can see that we're not trying to *hide* things like /proc/uptime.
and /sys/devices/virtual/net.  If the host adds this to the config file
for container w1, then container w1 will support unprivileged child
containers.

The nesting.conf file also sets the apparmor profile to the with-nesting
variant, since that is required anyway.  This actually means that
supporting nesting isn't really more work than it used to be, just
different.  Instead of adding

lxc.aa_profile = lxc-container-default-with-nesting

you now just need to

lxc.include = /usr/share/lxc/config/nesting.conf

(Look, fewer characters :)

Finally, in order to maintain the current apparmor protections on
proc and sys, we make /dev/.lxc/{proc,sys} non-read/writeable.
We don't need to be able to use them, we're just showing the
kernel what's what.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodoc: Add LXC-specific mount option in Japanese lxc.container.conf(5)
KATOH Yasufumi [Fri, 28 Aug 2015 06:35:50 +0000 (15:35 +0900)] 
doc: Add LXC-specific mount option in Japanese lxc.container.conf(5)

Add the description of optional, create=file/dir for lxc.mount.entry.
This is update for commit f5b67b3.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocoverity: fix mount_entry_create_dir_file
Serge Hallyn [Fri, 4 Sep 2015 18:15:13 +0000 (13:15 -0500)] 
coverity: fix mount_entry_create_dir_file

First, fix use of uninitialized variable 'ret'.  Then, actually use
the value it returned in its caller.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agoTear down network devices during container halt
Major Hayden [Wed, 2 Sep 2015 21:21:11 +0000 (16:21 -0500)] 
Tear down network devices during container halt

On very busy systems, some virtual network devices won't be destroyed after a
container halts.  This patch uses the lxc_delete_network() method to ensure
that network devices attached to the container are destroyed when the
container halts.

Without the patch, some virtual network devices are left over on the system
and must be removed with `ip link del <device>`.  This caused containers
with lxc.network.veth.pair to not be able to start.  For containers using
randomly generated virtual network device names, the old devices will hang
around on the bridge with their original MAC address.

Signed-off-by: Major Hayden <major@mhtx.net>
9 years agoinit: Support older apparmor
Stéphane Graber [Thu, 27 Aug 2015 19:25:08 +0000 (15:25 -0400)] 
init: Support older apparmor

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix grammar in some of the executables
Christian Brauner [Fri, 14 Aug 2015 18:24:05 +0000 (20:24 +0200)] 
Fix grammar in some of the executables
"NAME for name of the container" becomes "NAME of the container"

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoMake LXC_CLONE_KEEPNAME work
Christian Brauner [Fri, 14 Aug 2015 18:17:21 +0000 (20:17 +0200)] 
Make LXC_CLONE_KEEPNAME work

- Passing the LXC_CLONE_KEEPNAME flag to do_lxcapi_clone() was not respected and
  let to unexpected behaviour for e.g. lxc-clone. We wrap
  clear_unexp_config_line() and set_config_item_line() in an appropriate
  if-condition.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoSplit handle of lxc.mount* with 3 functions
Nicolas Cornu [Sat, 15 Aug 2015 22:52:44 +0000 (00:52 +0200)] 
Split handle of lxc.mount* with 3 functions

Signed-off-by: Nicolas Cornu <nicolac76@yahoo.fr>
9 years agoRefactor and factorize mount entries
Nicolas Cornu [Thu, 6 Aug 2015 08:37:15 +0000 (10:37 +0200)] 
Refactor and factorize mount entries

Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
9 years agoFactorize handle of create=dir and create=file
Nicolas Cornu [Thu, 6 Aug 2015 08:35:16 +0000 (10:35 +0200)] 
Factorize handle of create=dir and create=file

Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
9 years agoOnly use LOGPATH if lxcpath is unset or default
Michal Grzedzicki [Tue, 21 Jul 2015 08:29:00 +0000 (10:29 +0200)] 
Only use LOGPATH if lxcpath is unset or default

Signed-off-by: Michał Grzędzicki <lazy404@gmail.com>
9 years agopass on reboot flag and delete old veth on reboot
Wolfgang Bumiller [Mon, 27 Jul 2015 05:33:08 +0000 (07:33 +0200)] 
pass on reboot flag and delete old veth on reboot

When setting lxc.network.veth.pair to get a fixed interface
name the recreation of it after a reboot caused an EEXIST.
-) The reboot flag is now a three-state value. It's set to
1 to request a reboot, and 2 during a reboot until after
lxc_spawn where it is reset to 0.
-) If the reboot is set (!= 0) within instantiate_veth and
a fixed name is used, the interface is now deleted before
being recreated.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-autostart: Fix broken output
Stéphane Graber [Fri, 17 Jul 2015 18:35:15 +0000 (14:35 -0400)] 
lxc-autostart: Fix broken output

This fixes some typos, missing newlines and unflushed output leading to
duplicate entries when piped (similar to what we had in lxc-info).

Reported-by: Marc Gariépy
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodaemonized start: exit children on failure, don't return
Serge Hallyn [Thu, 11 Jun 2015 04:08:15 +0000 (23:08 -0500)] 
daemonized start: exit children on failure, don't return

When starting a daemonized container, only the original parent
thread should return to the caller.  The first forked child
immediately exits after forking, but the grandparent child
was in some places returning on error - causing a second instance
of the calling function.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Tycho Andersen <tycho.andersen@canonical.com>
9 years agoFix creation of dev/mqueue and dev/shm on Gentoo
Dennis Schridde [Thu, 11 Jun 2015 13:21:19 +0000 (15:21 +0200)] 
Fix creation of dev/mqueue and dev/shm on Gentoo

The dev/mqueue and dev/shm directories do not exist when using lxc.autodev, thus they have to be created upon mount.

Signed-off-by: Dennis Schridde <devurandom@gmx.net>
9 years agoUpdate lxc-oracle.in
有张纸 [Thu, 11 Jun 2015 04:50:50 +0000 (12:50 +0800)] 
Update lxc-oracle.in

9 years agouniformly nullify std fds
Tycho Andersen [Wed, 10 Jun 2015 21:57:50 +0000 (21:57 +0000)] 
uniformly nullify std fds

In various places throughout the code, we want to "nullify" the std fds,
opening them to /dev/null or zero or so. Instead, let's unify this code and do
it in such a way that Coverity (probably) won't complain.

v2: use /dev/null for stdin as well
v3: add a comment about use of C's short circuiting
v4: axe comment, check errors on dup2, s/quiet/need_null_stdfds

Reported-by: Coverity
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agodetect whether cgmanager_list_controllers is available
Serge Hallyn [Wed, 3 Jun 2015 05:03:39 +0000 (05:03 +0000)] 
detect whether cgmanager_list_controllers is available

and don't use it if not. This fixes failure to build with older
cgmanager.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-destroy: remove btrfs subvolumes
Serge Hallyn [Tue, 28 Apr 2015 13:31:05 +0000 (13:31 +0000)] 
lxc-destroy: remove btrfs subvolumes

Doing this requires some btrfs functions from bdev to be used in
utils.c  Because utils.h is imported by lxc_init.c, I had to create
a new initutils.[ch] which are used by both lxc_init.c and utils.c
We could instead put the btrfs functions into utils.c, which would
be a shorter patch, but it really doesn't belong there.  So I went
the other way figuring there may be more such cases coming up of
fns in utils.c needing code from bdev.c which can't go into lxc_init.

Currently, if we detect a btrfs subvolume we just remove it.  The
st_dev on that dir is different, so we cannot detect if this is
bound in from another fs easily.  If we care, we should check
whether this is a mountpoint, this patch doesn't do that.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocoverity: free 'result' in error case.
Serge Hallyn [Sun, 17 May 2015 12:30:57 +0000 (07:30 -0500)] 
coverity: free 'result' in error case.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agoProperly free memory of sorted cgroup settings
Kien Truong [Mon, 6 Apr 2015 16:20:43 +0000 (17:20 +0100)] 
Properly free memory of sorted cgroup settings

We need to use lxc_list_for_each_safe, otherwise de-allocation
will fail with a list size bigger than 2. The pointer to the head
of the list also need freeing after we've freed all other elements
of the list.

Signed-off-by: Kien Truong <duckientruong@gmail.com>
9 years agoCheck malloc failure when sorting cgroup settings.
Kien Truong [Mon, 6 Apr 2015 16:05:20 +0000 (17:05 +0100)] 
Check malloc failure when sorting cgroup settings.

Signed-off-by: Kien Truong <duckientruong@gmail.com>
9 years agoSort the cgroup memory settings before applying.
Kien Truong [Sun, 5 Apr 2015 23:46:22 +0000 (23:46 +0000)] 
Sort the cgroup memory settings before applying.

Add a function to sort the cgroup settings before applying.
Currently, the function will put memory.memsw.limit_in_bytes after
memory.limit_in_bytes setting so the container will start
regardless of the order specified in the input. Fix #453

Signed-off-by: Kien Truong <duckientruong@gmail.com>
9 years agolxc-alpine: create /dev/shm before mounting
Natanael Copa [Fri, 24 Apr 2015 08:26:40 +0000 (10:26 +0200)] 
lxc-alpine: create /dev/shm before mounting

This is needed for lxc.autodev=1 to work.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix incomplete destruction of unprivileged ephemeral containers
Stéphane Graber [Mon, 6 Apr 2015 16:11:25 +0000 (12:11 -0400)] 
Fix incomplete destruction of unprivileged ephemeral containers

If an unprivileged ephemeral container is started as follows,

    lxc-start-ephemeral -o trusty -n test_ephemeral

Then an empty directory remains upon exit from the container,

    ~/.local/share/lxc/test_ephemeral/tmpfs/delta0

(The tmpfs filesystem is successfully unmounted, but we seem to lack
permission to delete the delta0 directory).

This issue arose following commits 4799a1e and dd2271e .

The following patch resolves the issue. It has been tested on ubuntu
14.04 with the lxc-daily ppa.
Since gmail screws up the formatting of the patch via line-wrapping
etc, please copy the patch from the issue-tracker rather than from
this email.

Signed-off by: Oleg Freedholm <overlayfs@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-destroy: actually work if underlying fs is overlayfs
Serge Hallyn [Mon, 16 Mar 2015 17:02:12 +0000 (17:02 +0000)] 
lxc-destroy: actually work if underlying fs is overlayfs

One of the 'features' of overlayfs is that depending on whether a file
is on the upper or lower dir you get back a different device from stat.
That breaks our lxc_rmdir_onedev.

So at lxc_rmdir_ondev check the device of the directory being deleted.
If it is overlayfs, then skip the device check.

Note this is unrelated to overlayfs snapshots - in those cases when you
delete a container, /var/lib/lxc/$container/ does not actually have an
overlayfs under it.  Rather, to reproduce this you would

sudo mkdir /opt/{lower,upper,workdir}
sudo mount -t overlayfs -o lower=/opt/lower,upper=/opt/upper,workdir=/opt/workdir \
lxc /var/lib/lxc
sudo lxc-create -t download -n c1 -- -d ubuntu -r trusty -a amd64
sudo lxc-destroy -n c1

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Tested-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agotemplates: gentoo.common: Add /dev/shm tmpfs mount entry
Markos Chandras [Thu, 12 Mar 2015 20:52:11 +0000 (20:52 +0000)] 
templates: gentoo.common: Add /dev/shm tmpfs mount entry

/dev/shm needs to be mounted as tmpfs. It's needed by python
and possibly other packages.

Signed-off-by: Markos Chandras <hwoarang@gentoo.org>
9 years agoFix lxc-create -h with absolute template path
Stéphane Graber [Wed, 28 Jan 2015 08:28:22 +0000 (09:28 +0100)] 
Fix lxc-create -h with absolute template path

Close #421

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoimprove "lxc-create -t debian -h" help text
Tomas Pospisek [Sun, 25 Jan 2015 15:27:10 +0000 (16:27 +0100)] 
improve "lxc-create -t debian -h" help text

- document environment variables
- add missing --packages switch to command line
- describe how to pass template options to lxc-create (since
  lxc-create -h doesn't tell you)
- render help text in the same pretty format as lxc-create does

Signed-off-by: Tomáš Posíšek <tpo_deb@sourcepole.ch>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agorpm: added dependency to lxc-libs to lxc package
Johannes Kastl [Fri, 23 Jan 2015 18:28:10 +0000 (19:28 +0100)] 
rpm: added dependency to lxc-libs to lxc package

Ensures matching versions of lxc and lxc-libs being installed

Signed-off-by: Johannes Kastl <mail@ojkastl.de>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoBug #158: Deletion of unnecessary checks before a few calls of LXC functions
Markus Elfring [Sat, 24 Jan 2015 19:38:49 +0000 (20:38 +0100)] 
Bug #158: Deletion of unnecessary checks before a few calls of LXC functions

The following functions return immediately if a null pointer was passed.
* container_destroy
* lxc_cgroup_process_info_free_and_remove
* lxc_cgroup_put_meta
* toss_list

It is therefore not needed that a function caller repeats a corresponding check.

This issue was fixed by using the software Coccinelle 1.0.0-rc23.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoBug #158: Deletion of unnecessary checks before calls of the function "free"
Markus Elfring [Sat, 24 Jan 2015 18:55:36 +0000 (19:55 +0100)] 
Bug #158: Deletion of unnecessary checks before calls of the function "free"

The function "free" is documented in the way that no action shall occur for
a passed null pointer. It is therefore not needed that a function caller
repeats a corresponding check.
http://stackoverflow.com/questions/18775608/free-a-null-pointer-anyway-or-check-first

This issue was fixed by using the software Coccinelle 1.0.0-rc23.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-start-ephemeral: fix pep-8 and pyflakes3
Stéphane Graber [Thu, 22 Jan 2015 16:54:46 +0000 (11:54 -0500)] 
lxc-start-ephemeral: fix pep-8 and pyflakes3

This defines a missing variable and re-indents the code a bit.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoyet another problem with new overlay fs
Serge Hallyn [Mon, 19 Jan 2015 05:06:55 +0000 (05:06 +0000)] 
yet another problem with new overlay fs

It turns out that the new upstream overlay fs requires that the delta
and work dirs be under the same mount.  So create a $lxcpath/tmpfs
and create delta0 and work0 under that.  If the user asks for a
tmpfs that'll be mounted under $lxcpath/tmpfs and workdir and delta0
both created under that.

This isn't heavily tested.  But if fixes mounting of 'overlay' fs
for me.

It's "not backward compatible", since it moves delta0, but that
shouldn't matter since ephemeral containers are either destroyed
on exit, or re-started with lxc-start.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-start-ephemeral: handle the overlayfs workdir option (v2)
Serge Hallyn [Tue, 13 Jan 2015 00:08:37 +0000 (00:08 +0000)] 
lxc-start-ephemeral: handle the overlayfs workdir option (v2)

We fixed this some time ago for basic lxc-start, but never did
lxc-start-ephemeral.

Since the lxc-start patches were pushed, Miklos has given us a
way to detect whether we need the workdir= option.  So the
bdev.c code could be simplified to check for "overlay\n" in
/proc/filesystems just as lxc-start-ephemeral does.  This
patch doesn't do that.

Changelog (v2):
1. use 'overlay' fstype for new overlay upstream module
2. avoid using unneeded readlines().

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoAlternative test for dpkg multiarch support in lxc-debian template
David Noyes [Fri, 28 Aug 2015 14:44:25 +0000 (14:44 +0000)] 
Alternative test for dpkg multiarch support in lxc-debian template

Signed-off-by: David Noyes <david.j.noyes@gmail.com>
9 years agoTest dpkg for multiarch support in lxc-debian template
David Noyes [Wed, 26 Aug 2015 13:18:49 +0000 (14:18 +0100)] 
Test dpkg for multiarch support in lxc-debian template

Signed-off-by: David Noyes <david.j.noyes@gmail.com>
9 years agoFix container creation without a rootfs
David Ward [Tue, 23 Jun 2015 14:57:39 +0000 (10:57 -0400)] 
Fix container creation without a rootfs

It is not an error to create a container without a template or rootfs.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoWhen creating container, save configuration if rootfs already exists
David Ward [Tue, 23 Jun 2015 14:57:38 +0000 (10:57 -0400)] 
When creating container, save configuration if rootfs already exists

Commit 6c6892b "fix multithreaded create()" prevented the container
configuration from being saved if the backing store does not need
to be created.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoAllow autodev without a rootfs
David Ward [Tue, 23 Jun 2015 14:57:37 +0000 (10:57 -0400)] 
Allow autodev without a rootfs

A container without a rootfs is useful for running a collection of
processes in separate namespaces (to provide separate networking as
an example), while sharing the host filesystem (except for specific
paths that are re-mounted as needed). For multiple processes to run
automatically when such a container is started, it can be launched
using lxc-start, and a separate instance of systemd can manage just
the processes inside the container. (This assumes that the path to
the systemd unit files is re-mounted and only contains the services
that should run inside the container.) For this use case, autodev
should be permitted for a container that does not have a rootfs.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix automatic mounts without a rootfs
David Ward [Tue, 23 Jun 2015 14:57:36 +0000 (10:57 -0400)] 
Fix automatic mounts without a rootfs

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix /dev symlinks without a rootfs
David Ward [Tue, 23 Jun 2015 14:57:35 +0000 (10:57 -0400)] 
Fix /dev symlinks without a rootfs

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix verification of start hook without a rootfs
David Ward [Tue, 23 Jun 2015 14:57:34 +0000 (10:57 -0400)] 
Fix verification of start hook without a rootfs

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoOnly mount /proc if needed, even without a rootfs
David Ward [Tue, 23 Jun 2015 14:57:33 +0000 (10:57 -0400)] 
Only mount /proc if needed, even without a rootfs

Use the same code with and without a rootfs to check if mounting
/proc is necessary before doing so. If mounting it is unsuccessful
and there is no rootfs, continue as before.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-debian: support stretch (Debian 9) images
Antonio Terceiro [Wed, 19 Aug 2015 20:14:13 +0000 (22:14 +0200)] 
lxc-debian: support stretch (Debian 9) images

Signed-off-by: Antonio Terceiro <terceiro@debian.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoAdd doc for optional, create=dir and create=file in lxc.container.conf man
Nicolas Cornu [Wed, 5 Aug 2015 18:17:48 +0000 (20:17 +0200)] 
Add doc for optional, create=dir and create=file in lxc.container.conf man

Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
9 years agocheck for NULL pointers before calling setenv()
Robert Schiele [Fri, 21 Aug 2015 05:35:34 +0000 (07:35 +0200)] 
check for NULL pointers before calling setenv()

Latest glibc release actually honours calling setenv with a NULL
pointer by causing SIGSEGV but checking pointers before submitting
to any system function is a good idea anyway.

Signed-off-by: Robert Schiele <rschiele@gmail.com>
9 years agoAdd long option for -P in documentation
Nicolas Cornu [Fri, 14 Aug 2015 15:57:53 +0000 (17:57 +0200)] 
Add long option for -P in documentation

Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
9 years agolxc-debian: skip security updates for unstable/sid
Antonio Terceiro [Sat, 18 Jul 2015 23:24:12 +0000 (20:24 -0300)] 
lxc-debian: skip security updates for unstable/sid

There is no such thing as security support for unstable/sid.

Signed-off-by: Antonio Terceiro <terceiro@debian.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agogitignore: add TAGS files
Tycho Andersen [Mon, 10 Aug 2015 17:12:17 +0000 (11:12 -0600)] 
gitignore: add TAGS files

Somehow our `make tags` target generates TAGS and not tags, so let's ignore
that too.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc_monitor: free @preg on error
Arjun Sreedharan [Sun, 12 Jul 2015 12:46:17 +0000 (18:16 +0530)] 
lxc_monitor: free @preg on error

reuse label cleanup since free(NULL) is a no-op
Signed-off-by: Arjun Sreedharan <arjun024@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoPrevent from error on umount /proc if userns are used.
Przemek Rudy [Wed, 29 Jul 2015 17:41:28 +0000 (19:41 +0200)] 
Prevent from error on umount /proc if userns are used.

Signed-off-by: Przemek Rudy <prudy1@o2.pl>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoCaps are getting lost when cloning an LXC. Adding the -X parameter copies the extende...
Robert LeBlanc [Thu, 13 Aug 2015 19:36:55 +0000 (13:36 -0600)] 
Caps are getting lost when cloning an LXC. Adding the -X parameter copies the extended attributes. This allows things like ping to continue to be used by a non-privilged user in Debian at least.

9 years agoFresh CONTRIBUTING
Nicolas Cornu [Wed, 5 Aug 2015 18:27:31 +0000 (20:27 +0200)] 
Fresh CONTRIBUTING

Signed-off-by: Nicolas Cornu <nicolac76@yahoo.fr>
9 years agotemplates: lxc-opensuse, use rpm to determine build version
Jiri Slaby [Wed, 5 Aug 2015 08:32:54 +0000 (10:32 +0200)] 
templates: lxc-opensuse, use rpm to determine build version

zypper info's output is not usable for several reasons:
* it is localized -- there is no "Version: " in my output
* it shows results both from the repo and local system

So use plain rpm to determine whether build is installed and if proper
version is in place.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
9 years agoFix error message when cannot find an lxc-init
Nicolas Cornu [Wed, 5 Aug 2015 07:22:24 +0000 (09:22 +0200)] 
Fix error message when cannot find an lxc-init

lxc-init has been renamed init.lxc so adapt error message

Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
9 years agolxc-alpine: fix verification of apk.static binary
Natanael Copa [Mon, 3 Aug 2015 11:40:25 +0000 (13:40 +0200)] 
lxc-alpine: fix verification of apk.static binary

We need specify which hashing algorithm was used to create the signature
we check.

Fixes #609

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodoc: Remove unnecessary common options from lxc-user-nic(1)
KATOH Yasufumi [Mon, 3 Aug 2015 07:42:38 +0000 (16:42 +0900)] 
doc: Remove unnecessary common options from lxc-user-nic(1)

lxc-user-nic command cannot use common options.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
9 years agodoc: Add the description for --version to English and Japanese common_options
KATOH Yasufumi [Mon, 3 Aug 2015 07:40:13 +0000 (16:40 +0900)] 
doc: Add the description for --version to English and Japanese common_options

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
9 years agodoc: Add the description for -P and --version to English and Japanese lxc-ls(1)
KATOH Yasufumi [Mon, 3 Aug 2015 07:23:45 +0000 (16:23 +0900)] 
doc: Add the description for -P and --version to English and Japanese lxc-ls(1)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
9 years agoAdd -P lxcpath and --version to lxc-ls manpage
Christian Brauner [Sat, 1 Aug 2015 14:54:30 +0000 (16:54 +0200)] 
Add -P lxcpath and --version to lxc-ls manpage

lxc-ls takes -P lxcpath and --version as arguments but it did not specify these
options on the manpages.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
9 years agoseccomp: simplify and fix rule parsing
Wolfgang Bumiller [Thu, 23 Jul 2015 09:10:18 +0000 (11:10 +0200)] 
seccomp: simplify and fix rule parsing

1) Two checks on amd64 for whether compat_ctx has already
been generated were redundant, as compat_ctx is generally
generated before entering the parsing loop.

2) With introduction of reject_force_umount the check for
whether the syscall has the same id on both native and
compat archs results in false behavior as this is an
internal keyword and thus produces a -1 on
seccomp_syscall_resolve_name_arch().
The result was that it was added to the native architecture
twice and never to the 32 bit architecture, causing it to
have no effect on 32 bit containers on 64 bit hosts.

3) I do not see a reason to care about whether the syscalls
have the same number on the two architectures. On the one
hand this check was there to avoid adding it to two archs
(and effectively leaving one arch unprotected), while on
the other hand it seemed to be okay to add it to the
same arch *twice*.

The entire architecture checking branches are now reduced to
three simple cases: 'native', 'non-native' and 'all'. With
'all' adding to both architectures regardless of the syscall
ID.

Also note that libseccomp had a bug in its architecture
checking, so architecture related filters weren't working as
expected before version 2.2.2, which may have contributed to
the confusion in the original architecture-related code.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
9 years agoFix Android build due to missing constant
Stéphane Graber [Wed, 22 Jul 2015 15:55:46 +0000 (11:55 -0400)] 
Fix Android build due to missing constant

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-fedora: Default to 22 but use 20 squashfs
Stéphane Graber [Sun, 19 Jul 2015 03:42:00 +0000 (23:42 -0400)] 
lxc-fedora: Default to 22 but use 20 squashfs

The Fedora 22 squashfs doesn't appear to work, the Fedora 21 isn't
available, so lets use the fedora archive mirror and pull the good old
Fedora 20 squashfs.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoDefault to Fedora 21 as 22 no longer uses yum
Stéphane Graber [Sun, 19 Jul 2015 03:30:46 +0000 (23:30 -0400)] 
Default to Fedora 21 as 22 no longer uses yum

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoFix fedora some more
Stéphane Graber [Sun, 19 Jul 2015 03:18:34 +0000 (23:18 -0400)] 
Fix fedora some more

Apparently the paths have changed on the rsync server.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoFedora 20 no longer exists on the mirrors
Stéphane Graber [Sun, 19 Jul 2015 03:01:24 +0000 (23:01 -0400)] 
Fedora 20 no longer exists on the mirrors

Switch to Fedora 22 for now.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoUse /dev/loop-control if it exists
Wolfgang Bumiller [Fri, 3 Jul 2015 12:10:17 +0000 (14:10 +0200)] 
Use /dev/loop-control if it exists

Loop devices can be added on the fly when needed, they're
not always created beforehand. The loop-control device can
be used to find and allocate the next available number
instead of going through the /dev directory contents (which
is now only a fallback mechanism).

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
9 years agodebian template: reconfigure locales
有张纸 [Wed, 1 Jul 2015 15:39:08 +0000 (23:39 +0800)] 
debian template: reconfigure locales

Signed-off-by: feng xiahou <xiahoufeng@yahoo.com>
9 years agoSupport unprivileged ephemeral container using aufs
KATOH Yasufumi [Thu, 25 Jun 2015 09:14:04 +0000 (18:14 +0900)] 
Support unprivileged ephemeral container using aufs

As the commit 31a882e, an unprivileged container can use aufs.
This patch removes the check for unpriv aufs, and change the path of
xino file as an unprivileged user can mount aufs.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years ago debootstrap failed when $GREP_OPTIONS is set
有张纸 [Tue, 30 Jun 2015 08:23:11 +0000 (16:23 +0800)] 
 debootstrap failed when $GREP_OPTIONS is set

 debootstrap failed when $GREP_OPTIONS is set, so we need to unset it in the template

Signed-off-by: <feng xiahou xiahoufeng@yahoo.com>
9 years agolxc_monitor: fix memory leak on @fds and close fds
Arjun Sreedharan [Wed, 10 Jun 2015 18:24:15 +0000 (23:54 +0530)] 
lxc_monitor: fix memory leak on @fds and close fds

also label and consolidate error conditions for
better readability

Signed-off-by: Arjun Sreedharan <arjun024@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agouse `hostname` for DHCP_HOSTNAME in ifcfg-eth0
Lenz Grimmer [Fri, 12 Jun 2015 23:08:41 +0000 (01:08 +0200)] 
use `hostname` for DHCP_HOSTNAME in ifcfg-eth0

Updated centos/fedora/oracle templates to use `hostname` for DHCP_HOSTNAME in
/etc/sysconfig/network/ifcfg-eth0, so the container's host name is propagated
to the host's DHCP server (e.g. dnsmasq, which also acts as the DNS server).
This resolves lxc/lxd#756

Signed-off-by: Lenz Grimmer <lenz@grimmer.com>
9 years agodoc: Translate untranslated section titles in Japanese man pages
Sungbae Yoo [Fri, 12 Jun 2015 01:27:28 +0000 (10:27 +0900)] 
doc: Translate untranslated section titles in Japanese man pages

Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
9 years agomove utils.h #endif to end of file
Tycho Andersen [Tue, 9 Jun 2015 01:59:53 +0000 (19:59 -0600)] 
move utils.h #endif to end of file

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agoconfig: miscellaneous signals for lxc.*signal
Sungbae Yoo [Wed, 27 May 2015 05:51:55 +0000 (14:51 +0900)] 
config: miscellaneous signals for lxc.*signal

Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
9 years agofix build on mpc85xx
Daniel Golle [Tue, 9 Jun 2015 10:58:12 +0000 (12:58 +0200)] 
fix build on mpc85xx

Initialize ret to 0 so compiler no longer complains about
monitor.c: In function 'lxc_monitor_open':
monitor.c:212:5: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]

https://github.com/openwrt/packages/issues/1356

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
9 years agocoverity: fix use-after-free in cgmanager.
Serge Hallyn [Mon, 8 Jun 2015 15:33:22 +0000 (10:33 -0500)] 
coverity: fix use-after-free in cgmanager.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>