nspawn: skip /sys-as-tmpfs if we don't use private-network
authorIago López Galeiras <iaguis@gmail.com>
Thu, 15 Oct 2015 10:13:13 +0000 (12:13 +0200)
committerIago López Galeiras <iaguis@gmail.com>
Tue, 20 Oct 2015 08:19:23 +0000 (10:19 +0200)
commitd167824896e583ffaca891b1c355ff852496ff66
tree7a5e78bc85ee51a3b1639e8ffa75133eaff55ae8
parentec566e4c7cee67ec2c39475ef08f18a9f1b80efd
nspawn: skip /sys-as-tmpfs if we don't use private-network

Since v3.11/7dc5dbc ("sysfs: Restrict mounting sysfs"), the kernel
doesn't allow mounting sysfs if you don't have CAP_SYS_ADMIN rights over
the network namespace.

So the mounting /sys as a tmpfs code introduced in
d8fc6a000fe21b0c1ba27fbfed8b42d00b349a4b doesn't work with user
namespaces if we don't use private-net. The reason is that we mount
sysfs inside the container and we're in the network namespace of the host
but we don't have CAP_SYS_ADMIN over that namespace.

To fix that, we mount /sys as a sysfs (instead of tmpfs) if we don't use
private network and ignore the /sys-as-a-tmpfs code if we find that /sys
is already mounted as sysfs.

Fixes #1555
src/basic/util.c
src/basic/util.h
src/nspawn/nspawn-mount.c
src/nspawn/nspawn-mount.h
src/nspawn/nspawn.c