Commit Graph

4740 Commits

Author SHA1 Message Date
Akihiro Suda 9403afd75c CI: Fedora 33: print kernel version, systemd version, and rootfs type
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2020-11-06 20:30:04 +09:00
Akihiro Suda 0a097615c0 CI: update Fedora to 33
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2020-11-06 20:30:01 +09:00
Akihiro Suda e8498d3ad5 Merge pull request #2672 from giuseppe/fix-remount-readonly
linux: fix remount readonly in a user namespace
2020-11-06 20:40:46 +09:00
Giuseppe Scrivano 41aa764010 linux: drop MS_REC for readonly remount
it has no effect.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-06 11:36:50 +01:00
Giuseppe Scrivano a4e6955e31 linux: fix remount readonly in a user namespace
if we are remounting root read only when in a user namespace, make
sure the existing flags (e.g. MS_NOEXEC, MS_NODEV) are maintained
otherwise the mount fails with EPERM.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-06 11:35:40 +01:00
Akihiro Suda 8591c3364e Merge pull request #2658 from kolyshkin/tests-ex-run
tests/integration: rm excessive run use; fix exec --preserve-fds test
2020-11-06 13:56:21 +09:00
Mrunal Patel 60b2a47b17 Merge pull request #2671 from kolyshkin/shfmt-pin
ci: pin shfmt to v3.2.0
2020-11-05 16:39:18 -08:00
Kir Kolyshkin a66a823812 ci: pin shfmt to v3.2.0
We had to use shfmt from git master/HEAD in commit 069fddfa1 as at the
time there was no released/tagged version that supports bats syntax.

Now there is (https://github.com/mvdan/sh/releases/tag/v3.2.0),
so let's pin it to avoid sudden regressions caused by changes in master
branch.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-11-04 19:33:29 -08:00
Kir Kolyshkin 2ceb97196e tests/integration: rm excessive run use
Bats' run should only be used when we want to check both the command
output and its non-zero exit status.

Otherwise, we can rely on implicit exit code check (as the tests are
run with set -e), or use if, etc.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-29 16:49:43 -07:00
Kir Kolyshkin e32716d3da tests/int: simplify teardown_running_container
In its current form, it is complicated, unreliable, and error prone.

Using runc delete -f will kill and remove any container, running or not,
and it won't error if a container with a given name does not exist.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-29 16:49:43 -07:00
Kir Kolyshkin c114919fd3 tests/int: fix "runc exec --preserve-fds"
1. Fix the check, mostly by changing `cat hello` to `echo hello`,
   and checking for "hello" rather than *"hello"*.

   Previously, `cat hello` generated `cat: hello: no such file or
   directory` error message, which `run` added to `$output` and
   so the check for $output containing `hello` worked!

2. Simplify the test by not using the subshell and the `run`.
   The only catch is, fd 3 is used by bats itself, so we have to use
   fd 4 and thus --preserve-fds 2.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-29 16:49:43 -07:00
Mrunal Patel cf6c074115 Merge pull request #2666 from AkihiroSuda/shfmt-20201029
shfmt mounts.bats to pass `make validate`
2020-10-29 16:40:06 -07:00
Akihiro Suda 7b8c4e980a shfmt mounts.bats to pass make validate
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2020-10-29 15:56:21 +09:00
Aleksa Sarai 8d860c69ad merge branch 'pr-2634'
Cory Bennett (1):
  don't panic when /sys/fs/cgroup is missing for rootless

LGTMs: @AkihiroSuda @cyphar
Closes #2634
2020-10-29 15:59:01 +11:00
Akihiro Suda 9d4c02cf29 Merge pull request #2570 from EduardoVega/2246-fix-chmod-ro-tmpfs-mount
Fix mount error when chmod RO tmpfs
2020-10-26 18:19:16 +09:00
Akihiro Suda 6a28ca3eb4 Merge pull request #2661 from kinvolk/mauricio/fix-unit-test-in-libcontainer-exec
libcontainer/integration: fix unit test
2020-10-26 16:12:59 +09:00
Akihiro Suda 75201f34ed Merge pull request #2653 from xiaochenshen/rdt-IntelRdtManager-refactoring
libcontainer/intelrdt: IntelRdtManager refactoring
2020-10-25 19:00:31 +09:00
Mauricio Vásquez ac5ec5e32f libcontainer/integration: fix unit test
Fix a merge issue between 0aa0fae393 ("Kill all processes in cgroup even if init process Wait fails")
& 73d93eeb01 ("libct/int: make newTemplateConfig argument a struct") that
resulted in passing the wrong datatype to newTemplateConfig in
TestPIDHostInitProcessWait.

Signed-off-by: Mauricio Vásquez <mauricio@kinvolk.io>
2020-10-23 07:56:11 -05:00
Mrunal Patel 07e35a7a40 Merge pull request #2600 from kolyshkin/libct-int-wut
libcontainer/integration: fix cgroupv1 + systemd tests
2020-10-22 21:05:15 -07:00
Mrunal Patel 10e5ab7966 Merge pull request #2635 from kolyshkin/fscommon-III
libct/cg: introduce and use fscommon.OpenFile
2020-10-22 20:59:56 -07:00
Aleksa Sarai 4633f7bef8 merge branch 'pr-2657' into master
Kir Kolyshkin (2)
  test: add "runc run --no-pivot must not expose bare /proc"
  vendor: bump mountinfo to v0.4.0

LGTMs: @AkihiroSuda @cyphar
Closes #2657
2020-10-22 18:39:05 +11:00
Akihiro Suda 94eded3bf7 Merge pull request #2656 from KentaTada/add-systemd-cgroup-completion
Update bash completion to support systemd-cgroup
2020-10-22 13:44:36 +09:00
Akihiro Suda f5c345c30c test: add "runc run --no-pivot must not expose bare /proc"
For preventing regression like #2647

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-21 21:42:59 -07:00
Kir Kolyshkin 17de6f803d vendor: bump mountinfo to v0.4.0
Release notes:
 - https://github.com/moby/sys/releases/tag/mountinfo%2Fv0.4.0

In particular, this fixes a regression introduced in commit b8bf572812
which checked the mountinfo.Root field in a FilterFunc, while Root was
not set when calling a filter.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-21 21:41:13 -07:00
Kir Kolyshkin 8631de4132 Merge pull request #2652 from SataQiu/fix-20201016
Fix some typos about libcontainer
2020-10-21 10:15:21 -07:00
Kenta Tada 70538b39de Update bash completion to support systemd-cgroup
Signed-off-by: Kenta Tada <Kenta.Tada@sony.com>
2020-10-21 21:15:30 +09:00
Mrunal Patel 411e4132e1 Merge pull request #2642 from kolyshkin/shfmt-bats
Add shfmt for sh and bats
2020-10-20 12:05:46 -07:00
Kir Kolyshkin 623d66e950 Merge pull request #2648 from KentaTada/add-new-caps
Update bash completion to support new capabilities
2020-10-20 11:48:18 -07:00
Mrunal Patel 7ba005bbd3 Merge pull request #2647 from cyphar/procfs-masking-nested
rootfs: handle nested procfs mounts for MS_MOVE
2020-10-19 14:56:34 -07:00
Xiaochen Shen 933c4d31a7 libcontainer/intelrdt: privatize IntelRdtManager and its fields
No functional change.

Signed-off-by: Xiaochen Shen <xiaochen.shen@intel.com>
2020-10-17 16:59:42 +08:00
Xiaochen Shen 2c004a101e libcontainer/intelrdt: introduce NewManager()
Introduce NewManager() to wrap up IntelRdtManager initialization. And
call it when required.

Signed-off-by: Xiaochen Shen <xiaochen.shen@intel.com>
2020-10-17 16:59:20 +08:00
SataQiu abcc1aae05 fix some typos about libcontainer
Signed-off-by: SataQiu <1527062125@qq.com>
2020-10-17 13:14:55 +08:00
Akihiro Suda d8bfd6c1ca Merge pull request #2644 from xiaochenshen/rdt-zero-value
libcontainer/intelrdt: remove 'omitempty' property from CMT and MBM counters
2020-10-16 16:53:16 +09:00
Cory Bennett 939ad4e3fc don't panic when /sys/fs/cgroup is missing for rootless
Signed-off-by: Cory Bennett <cbennett@netflix.com>
2020-10-15 15:52:19 +00:00
Kenta Tada 7613c718e6 Update bash completion to support new capabilities
This commit supports below capabilities.
* CAP_BPF
* CAP_CHECKPOINT_RESTORE
* CAP_PERFMON

Signed-off-by: Kenta Tada <Kenta.Tada@sony.com>
2020-10-15 08:32:57 +09:00
Aleksa Sarai b8bf572812 rootfs: handle nested procfs mounts for MS_MOVE
In a case where the host /proc mount has already been overmounted, the
MS_MOVE handling would get ENOENT when trying to hide (for instance)
"/proc/bus" because it had already hidden away "/proc". This revealed
two issues in the previous implementation of this hardening feaure:

1. No checks were done to make sure the mount was a "full" mount (it is
   a mount of the root of the filesystem), but the kernel doesn't permit
   a non-full mount to be converted to a full mount (for reference, see
   mnt_already_visible). This just removes extra busy-work during setup.

2. ENOENT was treated as a critical error, even though it actually
   indicates the mount doesn't exist and thus isn't a problem. A more
   theoretically pure solution would be to store the set of mountpoints
   to be hidden and only ignore the error if an ancestor directory of
   the current mountpoint was already hidden, but that would just add
   complexity with little justification.

In addition, better document the reasoning behind this logic so that
folks aren't confused when looking at it.

Fixes: 28a697cce3 ("rootfs: umount all procfs and sysfs with --no-pivot")
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2020-10-13 20:54:56 +11:00
Xiaochen Shen 5903b0cec3 libcontainer/intelrdt: remove 'omitempty' property from CMT and MBM counters
If the values of CMT and MBM counters are zero, they will be omitted as
empty items when getting Intel RDT stats.

Remove 'omitempty' property from CMT and MBM counters to display zero
values.

Signed-off-by: Xiaochen Shen <xiaochen.shen@intel.com>
2020-10-12 22:04:37 +08:00
Kir Kolyshkin 0253a08da9 CI: add shfmt for sh files
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-11 19:32:29 -07:00
Kir Kolyshkin ff9852c4de *.sh: use shfmt
I played with shfmt options (-bn, -ci, -sr) a bit trying to minimize
the patch generated (and also because I don't have a strong preference
on these matters), and it appears to be that the patch size is about the
same nevertheless, so I chose no options.

This commit is brought to you by

	shfmt -ln bash -w man/*.sh script/*.sh tests/*.sh tests/integration/*.bash

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-11 19:31:55 -07:00
Kir Kolyshkin 069fddfa11 CI: add shfmt for bats
Note that you need a very recent shfmt (such as
https://github.com/mvdan/sh/commit/08ecaf9adf4bb75).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-11 19:18:38 -07:00
Kir Kolyshkin fc8c779704 tests/integration/*.bats: reformat with shfmt
Various bats tests use various types of indentation (about half
is tabs, the rest is 2 spaces, 4 spaces, etc.).

Let's bring it to one style (tabs) using recently added
shfmt support for bats files (see [1]).

This commit is brought to you by

	shfmt -ln bats -w tests/integration/*.bats

[1] https://github.com/mvdan/sh/issues/600

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-11 19:15:36 -07:00
Kir Kolyshkin 44f221e2fc Merge pull request #2633 from chaitanyabandi/2632-fix
Kill processes in cgroup even if process Wait fails
2020-10-08 10:51:13 -07:00
Mrunal Patel 10825f70d3 Merge pull request #2631 from knabben/fix-some-lints
Fixing some lint issues
2020-10-07 21:24:40 -07:00
Chaitanya Bandi 0aa0fae393 Kill all processes in cgroup even if init process Wait fails
If the cgroup's init process doesn't complete successfully, Wait returns a
non-nil error. We should still kill all the process in the cgroup if process
namespace is shared. Otherwise, it may result in process leak.

Fixes #2632

Signed-off-by: Chaitanya Bandi <kbandi@cs.stonybrook.edu>
2020-10-08 01:26:34 +00:00
Kir Kolyshkin c11e997a59 Merge pull request #2629 from knabben/revise-root
Convert root path to absolute on create command
2020-10-06 13:45:01 -07:00
Kir Kolyshkin de77b5b39f Merge pull request #2630 from aos/2582-rootless-systemd-dbus-friendly-error
Rootless systemd dbus friendlier error
2020-10-06 12:43:17 -07:00
Amim Knabben 978fa6e906 Fixing some lint issues
Signed-off-by: Amim Knabben <amim.knabben@gmail.com>
2020-10-06 14:44:14 -04:00
Akihiro Suda bb539a9965 Merge pull request #2628 from thaJeztah/linting_foo
fix some linting issues
2020-10-06 20:10:40 +09:00
Kir Kolyshkin f0fdde79d2 libct/cg/systemd/v1: fix err check in enableKmem
Commit 27d3dd3df3 ("don't fail when subsystem not mounted") added
ignoring "not found" error to enableKmem, and as a result the function
now tries to call Mkdir with an empty path, which results in a weird
error message. For example, this is a failure from a
libcontainer/integration test:

> === RUN   TestRunWithKernelMemorySystemd
>    exec_test.go:704: runContainer failed with kernel memory limit: container_linux.go:370: starting container process caused: process_linux.go:327: applying cgroup configuration for process caused: mkdir : no such file or directory

I am not entirely sure if it is a good idea to silently ignore set
limits, but at least let's fix the error handling.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-05 20:51:02 -07:00
Kir Kolyshkin c1bba720f7 libct/cg/systemd/v1: do not use c.Path
Commit a1d5398afa ("Respect container's cgroup path") added a
cgroupPath argument to FindCgroupMountpoint to make runc/libcontainer
work in a custom multitenant environment with multiple cgroup mount
points.

It also added passing c.Path as an argument to FindCgroupMountpoint
for systemd (v1) controller. This is wrong, because

1. systemd controller do not use c.Path at all (and c.Path is never set
   by specconv) -- instead, it uses Name and Parent.

2. c.Path, if set, is not absolute -- it is relative to /sys/fs/cgroup
   -- but it is used as an absolute path here.

Since c.Path is never set, the change did not result in any breakage, so
this code sit quietly for some time and the issue might not have been
discovered -- until we started running libcontainer/integration tests
in a CentOS 7 VM, which resulted in a following weird error:

> FAIL: TestPidsSystemd: utils_test.go:55: exec_test.go:630: unexpected error: container_linux.go:353: starting container process caused: process_linux.go:326: applying cgroup configuration for process caused: mountpoint for devices not found

The error was "fixed" in commit f57bb2fe3d by changing the tests'
cgroups Path to be "/sys/fs/cgroup/". This actually resulted in
creation of cgroup directories like /sys/fs/cgroup/memory/sys/fs/cgroup,
/sys/fs/cgroup/devices/sys/fs/cgroup and so on.

The proper fix to the test case is implemented in the previous commit,
which sets c.Name and c.Parent.

This commit just removes the invalid use of c.Path, and tells the whole
story.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2020-10-05 20:51:02 -07:00