Commit graph

9571 commits

Author SHA1 Message Date
Cyrill Gorcunov
31c1955d13 inet: raw -- Prepare gen_uncon_sk for raw sockets
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-04-20 20:25:26 -07:00
Cyrill Gorcunov
536e57982e inet: raw -- Reuse already known family and type in gen_uncon_sk
No need to call for do_dump_opt, since these params
are already fetched.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-04-20 20:25:26 -07:00
Cyrill Gorcunov
347980d441 inet: raw -- Fetch socket type and check for being raw in can_dump_ipproto
Don't allow to proceed dumping since we don't support
raw sockets restore yet.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-04-20 20:25:26 -07:00
Cyrill Gorcunov
47ccf9a28b inet: raw -- Check for kernel diag module support
To collect raw sockets we need the kernel to support raw_diag module.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-04-20 20:25:26 -07:00
Cyrill Gorcunov
8f1155379c inet: raw -- Add constants needed to fetch properties of a raw socket
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-04-20 20:25:26 -07:00
Andrei Vagin
be28d924cb lint/python: ignore E117 over-indented
After recent update of flake8, we have a lot of e117 warnings:
test/zdtm.py:1748:5: E117 over-indented
test/zdtm.py:1751:5: E117 over-indented
test/zdtm.py:1755:6: E117 over-indented
test/zdtm.py:1757:7: E117 over-indented
test/zdtm.py:1764:6: E117 over-indented
test/zdtm.py:1766:5: E117 over-indented
test/zdtm.py:1767:6: E117 over-indented

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-02-16 11:06:01 -08:00
Andrei Vagin
d7d5f9fd2d zdtm/sigpending: check only relevant part of siginfo
Recently, a kernel behaviour how siginfo is copied into user-space was
changed:

4ce5f9c9e754 ("signal: Use a smaller struct siginfo in the kernel")

According to the rt_sigqueueinfo man page, the caller should set
si_code, si_pid, si_uid, si_value and there is no guarantee about other
fields.

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-02-14 21:22:35 +03:00
Pavel Emelyanov
c74b83cd49 criu: Version 3.11 (for workgroups)
So here it is -- the release with lots of new stuff and bugfixes.
Mainly, the new code is for integration with Docker and to support
modern hardware.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2018-11-06 14:31:36 +03:00
Cyrill Gorcunov
740ae4a360 x86: cpu -- Don't fail if member is not present in image
When migrating from old images the particular xsave member
might not be present in core-* image, which is fine we
simply left data as initial zero state.

https://jira.sw.ru/browse/PSBM-89215

Signed-off-by: Cyrill Gorcunov <gorcunov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-05 04:52:31 +03:00
Andrei Vagin
deef94ce7c test: use yaml.safe_dump to avoid dump without tags
safe_dump produces only standard YAML tags and
cannot represent an arbitrary Python object.

Reported-by: Mr Jenkins
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:45:27 +03:00
Adrian Reber
565498a774 tests: more python3 compatibility
This makes two zdtm test scripts python3 compatible to run
zdtm on a system without python2.

Signed-off-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:45:06 +03:00
Radostin Stoyanov
12fb7f5af0 Go-criu clean up
The Go bindings for CRIU and the P.Haul extension have been moved into
a separate repository.

This patch removes the following from the criu-dev branch:

- lib/go/*
- phaul/*
- scripts/travis/phaul

The removed files are available in

https://github.com/checkpoint-restore/go-criu

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:44:50 +03:00
Andrei Vagin
44a10467a6 cgroup: allow to specify a new root for each controller separately
A few controllers can be merged and before this patch, criu required to
set a new root by specifying all merged controllers.

This patch allows to specify a new root for each controller separately,
but criu will check that all merged controllers will have the same path.

https://github.com/checkpoint-restore/criu/issues/544

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:43:58 +03:00
Andrei Vagin
d01899e15b test/file_locks: use F_GETLK instead of F_GETLK64
F_GETLK64 has to be used with flock64

Reported-by: Mr Jenkins
2018-11-04 21:43:43 +03:00
Andrei Vagin
54daec1899 test/file_locks: use struct flock instead of struct flock64
If we want to use flock64, we have to use fcntl64. Otherwise we will get
errors like this:
ERR: file_locks07.c:49: Can't set ofd lock (errno = 22 (Invalid argument))

Reported-by: Mr Jenkins
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:43:35 +03:00
Dmitry Safonov
e2bd7af94c x86/compat: Remove call32_from_64() helper
It looks like, this one is no more needed.
You were a hard child, RIP.

Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:43:25 +03:00
Dmitry Safonov
b0c5881d55 x86/compat: Use do_full_int80() instead of jump to ia32 mode
Kernel will send signal with ABI of *syscall* that made rt_sigacation().
In sigaction_compat_abi():
>        if (in_ia32_syscall())
>                   act->sa.sa_flags |= SA_IA32_ABI;

So, we can omit switching to ia32 mode and just call int80 like in other places.
We still need 32-bit argument for syscall (sig action pointer).

As call32_from_64() switches mode, it's .text should be placed in lower 4Gb,
which was the reason of segfault if linker places criu code above 4Gb.
Oops, my bad.

Fixes: #567

Reported-by: Andrey Vagin <avagin@gmail.com>
Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:43:17 +03:00
Dmitry Safonov
9ec0947181 restorer: Remember to check ret codes for syscalls
Looks like, we're missing the check which potentially can add us
some troubles.

Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:43:12 +03:00
Dmitry Safonov
2c5e8fd7ab zdtm/x86: Don't override %ebx in fpu00
%ebx, %ecx aren't specified as clobbers in chk_proc_fpu(),
while asm cpuid overwrites them.

In the turn, %ebx is used as a code position by gcc now:
    1661:       e8 9a 00 00 00          call   1700 <__x86.get_pc_thunk.bx>
    1666:       81 c3 46 68 00 00       add    $0x6846,%ebx

Which results in dereferencing some ugly garbage (result of cpuid).

Let's use zdtm/lib cpuid() function instead.

Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-11-04 21:43:05 +03:00
Andrei Vagin
f25f9d57c8 test/file_lock01: don't limit a maximum field width for device numbers
Invalid lock info: lock: 1: FLOCK  ADVISORY  READ  61 103:00:1188168 0 EOF

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
eccdf07ae3 python fix lint warnings
flake8 started to report warnings like this:
test/zdtm.py:1337:6: W605 invalid escape sequence '\S'

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
ae6839194a userns: exit from a child on error paths
Here is one of popular error, when we call fork, then run a child code
and instead of exiting from a child process, we returns from a current
function with an error code.

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
de62bf764c test/ipc_namespace: set random values less that IPCMNI for *mni sysctls
There are a few patches in linux-next, which added this check:
    ipc: IPCMNI limit check for semmni
    ipc: IPCMNI limit check for msgmni and shmmni

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
c487ad187a service: call cr_check() from a child process
cr_check() initializes root_item and calls collect_pstree_ids. It was
not designed to be called directly from a service process.

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
87c036be90 service: call kerndat_init() before feature check
setup_opts_from_req() sets up logging and call kerndat_init().

Investigated-by: Adrian Reber <areber@redhat.com>
Fixes: 6e04f3b2dd06 ("criu: call kerndat_init() after log_init()")
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
8517bc7d27 service: use waitpid() when a child pid is known
We want to wait a specific child. wait() waits any child.

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Pavel Tikhomirov
e4d8dc6f29 zdtm: check criu restore with --auto-dedup
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Pavel Tikhomirov
f84ea82bb1 image/dedup: use userns_call to be able to open images for write
When restoring a task in it's user namespace we had: "Unable to open
pages-3.img: Permission denied" when trying to open pages images for
write. (Write is needed for memory images deduplication feature to
work.)

These patch makes do_open_image open images fd through usernsd, to have
root permissions.

Also increase MAX_UNSFD_MSG_SIZE as path and metadata don't fit, and
remove a workaround in prepare_vma_ios.

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Radostin Stoyanov
76f8c09093 crit-images: Fix reference to ipc_msg()
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Radostin Stoyanov
3b1563ebd0 crit-images: Don't overwrite 'pb' with local var
Rename the local variables 'pb' to 'pbuff' to avoid conflict with the
imported 'pb' module.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
ac3296c39f tty: allocate a separate tty info id for each external tty
Otherwise all external tty-s will share the same tty info,
what is obviously wrong.

v2: allocate a separate tty index range for externl terminals

Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrei Vagin
37711acea0 files: save inherited file descriptors in fdstore
In this case:
* don't need to care whether they intercept with restored file
  descriptors.
* they don't copied into each restored process
* don't need to close them one by one

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrey Vagin
89c5fc9b06 zdtm: create a few external descriptros
Currently, we create only one external resource to check how it is
handled by criu. It is better to create more than one.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrey Vagin
a96d229876 test/inhfd: fix lint warnings
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Andrey Vagin
d13ff7e32a lint: check test/inhfd/ scripts
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:19 +03:00
Mike Rapoport
114af54fe8 jenkins: lazy-pages: exclude maps04
On loaded systems running maps04 with lazy-pages takes too much time. The
same functionality is anyway covered by other tests so excluding  maps04
shouldn't decrease the test coverage.

Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Mike Rapoport
3e7cfd114d jenkins: split common part of lazy pages tests into a separate file
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Mike Rapoport
d9c7787ed3 travis: lazy-pages: exclude futex test for older kernels
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
07e53c77e1 inet: More readable content in show methods
This generates more readable data in logs.

 | (00.002930) inet:       Collected: ino 0xc3f15b family AF_INET    type SOCK_DGRAM     port     8081 state TCP_CLOSE       src_addr 127.0.0.10
 | (00.002980) inet:       Collected: ino 0xc3f159 family AF_INET    type SOCK_RAW       port        1 state TCP_CLOSE       src_addr 127.0.0.14
 | (00.002984) inet:       Collected: ino 0xc3f158 family AF_INET    type SOCK_RAW       port       17 state TCP_CLOSE       src_addr 127.0.0.12
 | (00.002988) inet:       Collected: ino 0xc3f156 family AF_INET    type SOCK_RAW       port      255 state TCP_CLOSE       src_addr 0.0.0.0
 | (00.003439) inet:       Collected: ino 0xc3f15a family AF_INET6   type SOCK_RAW       port       58 state TCP_CLOSE       src_addr ::
 | (00.003449) inet:       Collected: ino 0xc3f157 family AF_INET6   type SOCK_RAW       port      255 state TCP_CLOSE       src_addr ::

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
e238854f4e sockets: Improve helpers to make sockets more readable
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
18cb72ac0c net: Add prefixes for better logging
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
a3a42a4ce7 compiler: Add NELEMS_AS_ARRAY helper
To count elems in accumulator.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Andrey Vagin
0fb2f0e56a soccr: print errno if connect() failed
https://github.com/checkpoint-restore/criu/issues/557

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Acked-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
19e9df29a3 tun: Add support for multiple net ns
The tun files may have same names but different
net namespace so consider ns_id when searching
for particluar tun device name.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
348b2d1176 tun: Set net ns before opening master
Opening tun device is tricky: the net device
is allocated from current net namespace, thus
we should set it first, otherwise all tuns
which live in nested net namespace get moved
to the toplevel one.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Cyrill Gorcunov
64664bb24b tun: Define log prefix
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:18 +03:00
Radostin Stoyanov
c36b5dab05 python: Replace xrange with range
In Py2 `range` returns a list and `xrange` creates a sequence object
that evaluates lazily. In Py3 `range` is equivalent to `xrange` in Py2.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:14 +03:00
Radostin Stoyanov
7064cbaa35 python: Remove unnecessary semicolons
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:01 +03:00
Radostin Stoyanov
147660f02f Convert to python3 style print() syntax
Use __future__ imports to keep this working for python2

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:01 +03:00
Radostin Stoyanov
7ce23b2a74 python: Remove unused imports
Auto-detected with pylint.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30 19:28:01 +03:00