2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-30 22:05:36 +00:00
Commit Graph

7257 Commits

Author SHA1 Message Date
Mike Rapoport
c3e184f14a core-ppc64: mark gregs and clear_tid_addr as (criu).hex
travis-ci: success for core-aarch64: mark gregs and clear_tid_addr as (criu).hex (rev2)
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Mike Rapoport
3396710df1 core-arm: mark gregs and clear_tid_addr as (criu).hex
travis-ci: success for core-aarch64: mark gregs and clear_tid_addr as (criu).hex (rev2)
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Mike Rapoport
ff9b8544f4 core-aarch64: mark gregs and clear_tid_addr as (criu).hex
travis-ci: success for core-aarch64: mark gregs and clear_tid_addr as (criu).hex (rev2)
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Pavel Emelyanov
0d6e15f5e5 parasite: Relax size checking for get_exec_start()
For compel-ization it's MUCH easier to introduce single
constant, all the more so no VMAs can be shorter than
one page :)

travis-ci: success for parasite: Relax size checking for get_exec_start()
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Pavel Emelyanov
267037e8e8 parasite: Relax the parasite_execute_trap_by_pid API
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kirill Tkhai
386f7fec2e mount: Move adding cr-time binfmt_misc to collect_mnt_namespaces()
Binfmt_misc may not exist on NS_ROOT, and exist on NS_OTHER that time.
So, add binfmt_misc only if no one mnt_ns has it.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kirill Tkhai
714bd7a03f mount: Do not fail on shared cr-time mounts mismatch
Since cr-time mount parent may be shared, and we do
not propagate the mount there, this patch excludes
them from validation.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Cyrill Gorcunov
172f3e1908 freeze -- Wait for exiting tasks to complete
There is a small race between exitings tasks and cgroup freezer:
it can report a pid of exiting process which we will consider
as a zombie and refuse to checkpoint. Lets do a trick instead:
if we meets such task just wait a bit and repeate a freezing.

v3: Use EAGAIN instead of EPERM since EPERM collide
    with general -1 error code.

travis-ci: success for freeze -- Wait for exiting tasks to complete (rev3)
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Ruslan Kuprieiev
4f329dd4b2 lib: add inherit_fd
It is already present in CLI and RPC, so libcriu should reflect it too.

travis-ci: success for lib: add inherit_fd
Signed-off-by: Ruslan Kuprieiev <rkuprieiev@cloudlinux.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Tycho Andersen
6178668e6a test: robustify mnt_tracefs test
* make sure that tracefs is actually loaded, and try and access it after
  restore
* don't mount debugfs in /, leaving an ugly directory in /test
* clean up the debugfs mount point (with a hook, since the test can't
  unmount it due to perms)

travis-ci: success for test: robustify mnt_tracefs test
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
5992d7198b CI: add clang build for travis-ci
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
391bdbe44f zdtm/grow_map: fix test failure for clang
When this code is compiled by clang, it optimizes two byte writes into
one word write, like this:

>        fake_grow_down[0] = 'c';
>        *(fake_grow_down - 1) = 'b';
> 401b60:       66 41 c7 46 ff 62 63    movw   $0x6362,-0x1(%r14)

This is incorrect, as the stack is supposed to grow page by page,
so we need to touch one page then another, i.e. the order is important.

To fix, let's use volatile pointer. After this change, the following
(correct) code is generated:

>        *p-- = 'c';
>   401b60:       41 c6 06 63             movb   $0x63,(%r14)
>        *p = 'b';
>   401b64:       41 c6 46 ff 62          movb   $0x62,-0x1(%r14)

[v2: same fix for another similar place]

Cc: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
5465179f96 CI: move GCOV flag to travis.yml
Move GCOV to travis environment, so now we can change it easily
on a per-build basis.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
9fb43a4803 Makefile: don't compile with -O0 if GCOV=1
I found that everything we test on travis-ci is built with -O0.
I believe this is the wrong thing to do as we test something that is
compiled not the way it would be compiled for any real use.

Drop enabling DEBUG for GCOV.

Signed-off-by: Kir Kolyshkin <kir at openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
2f2fc08202 CI: move travis' after_success to a script
It is easier to handle it this way

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
f645996228 scripts/travis/Makefile: mark phony target as such
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
ca677a91ff parasite.c: rm unneeded init
This "struct ctl_msg" initialization is not really needed, as it is
initalized right away in __parasite_daemon_wait_msg() function.

The real reason of removing this init is when compiled by clang
with -O0 etc (i.e. compiler flags set when GCOV=1 env var is present),
clang inserts a call to memset to initialize the structure. This,
of course, leads to "compel piegen" complaining:

	Unexpected undefined symbol: `memset'. External symbol in PIE?

One way of solving it would be to provide a memset() which will call
builtin_memset(), or a simple C implemenation. But as this is the only
place that triggers such a call to memset(), and this initialization
is not really needed, it's easier just to remove it.

Now, there might be more cases like this in the future, but for now
we are good.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
b4441d1bd8 restorer.c: rm unneded struct init
This 'struct timespec' initialization is non needed as we call
clock_gettime() right away which is supposed to fill it in.

The real reason of removing this init is when compiled by clang
with -O0 etc (i.e. compiler flags set when GCOV=1 env var is present),
clang inserts a call to memset to initialize the structure. This,
of course, leads to "compel piegen" complaining:

	Unexpected undefined symbol: `memset'. External symbol in PIE?

One way of solving it would be to provide a memset() which will call
builtin_memset(), or a simple C implemenation. But as this is the only
place that triggers such a call to memset(), and this initialization
is not really needed, it's easier just to remove it.

Now, there might be more cases like this in the future, but for now
we are good.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
f18fce45a2 maps007 test: fix for clang
CLang doesn't like explicit NULL pointer dereference:
> maps007.c:176:2: error: indirection of non-volatile null pointer will be deleted, not trap [-Werror,-Wnull-dereference]
>         *((int *) 0) = 0;
>         ^~~~~~~~~~~~
> maps007.c:176:2: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
>

Apparently, we need to add volatile to make it happy.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
2ac1cc67a5 cmdlinenv00 test: fix for clang
clang complains:
> cmdlinenv00.c:35:11: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
>                 if (ret < 0) {
>                     ~~~ ^ ~

The fix is to use ssize_t not size_t.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
2479c25d32 apparmor test: fix for clang
clang complains:
> apparmor.c:86:20: error: too many arguments in call to 'checkprofile' [-Werror]
>         if (checkprofile(0) == 0)
>             ~~~~~~~~~~~~  ^

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
514ca4e93b rtc.c test: fix for clang
clang complains:
> clang -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0  -iquote ../lib/arch/x86/include -I../lib   rtc.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -o rtc
> rtc.c:50:7: error: taking the absolute value of unsigned type 'unsigned long' has no effect [-Werror,-Wabsolute-value]
>                 if (labs(delta - 1000000 / TEST_HZ ) > 100000) {
>                     ^

Declare delta as long.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:15 +03:00
Kir Kolyshkin
21c4675304 groups.c test: fix for clang
clang complains:
> clang -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0  -iquote ../lib/arch/x86/include -I../lib   groups.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -o groups
> groups.c:22:9: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
>         if (ng < 0) {
>             ~~ ^ ~

Declare ng as int.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:14 +03:00
Kir Kolyshkin
4be8daa153 vdso01 test: fix for clang
clang complains:
> clang -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0  -iquote ../lib/arch/x86/include -I../lib   vdso01.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -lrt -o vdso01
> vdso01.c:305:6: error: absolute value function 'abs' given an argument of type 'long' but has parameter of type 'int' which may cause truncation of value
>       [-Werror,-Wabsolute-value]
>         if (abs(ts1.tv_sec - ts2.tv_sec) > TIME_DELTA_SEC) {
>             ^
> vdso01.c:305:6: note: use function 'labs' instead

Let's use labs() indeed.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:14 +03:00
Kir Kolyshkin
fe21d145de inotify_system tests: fix for clang
When compiling with clang, it complains like this:

> clang -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0  -iquote ../lib/arch/x86/include -I../lib   inotify_system.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -o inotify_system
> inotify_system.c:323:50: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
>         if ((common_desc.inot < 0) || (common_desc.file < 0) || \
>                                        ~~~~~~~~~~~~~~~~ ^ ~
> inotify_system.c:324:21: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
>                         (common_desc.dir < 0) || (common_desc.link < 0)) {
>                          ~~~~~~~~~~~~~~~ ^ ~
> inotify_system.c:324:47: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
>                         (common_desc.dir < 0) || (common_desc.link < 0)) {
>                                                   ~~~~~~~~~~~~~~~~ ^ ~
> 3 errors generated.

Indeed these fields are uint32_t. As they are used to store the results of
inotify_init() and inotify_add_watch() function calls, the type should be int.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:14 +03:00
Kir Kolyshkin
8f9c6ff529 fpu00 test: fix for clang
clang complains a number of times on our inline asm code, like this:

> fpu00.c:13:6: error: ambiguous instructions require an explicit suffix
> (could be 'flds', 'fldl', or 'fldt')
>                           "fld  %0\n"
>                           ^
> <inline asm>:1:2: note: instantiated into assembly here
>         fld     -4(%rsp)
>         ^

As floats are used, the suffix should be 's' ("short", 32-bit, float).

Add it where needed.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:14 +03:00
Kir Kolyshkin
a95939c089 zombie00 test: fix for clang
CLang doesn't like explicit NULL pointer dereference:

> zombie00.c:52:5: error: indirection of non-volatile null pointer will be
> deleted, not trap [-Werror,-Wnull-dereference]
>                                 *(int *)NULL = 0;
>                                 ^~~~~~~~~~~~
> zombie00.c:52:5: note: consider using __builtin_trap() or qualifying
> pointer with 'volatile'
> 1 error generated.

Apparently, we need to add volatile to make it happy.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:14 +03:00
Kir Kolyshkin
3c75cf5198 zdtm: compile fix for clang
clang complains about an unused function:

> clang -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
> -iquote ./arch/x86/include  -c -o parseargs.o parseargs.c
> parseargs.c:12:1: error: unused function '__check_help'
> [-Werror,-Wunused-function]
> TEST_OPTION(help, bool, "print help message and exit", 0);
> ^
> ./zdtmtst.h:71:2: note: expanded from macro 'TEST_OPTION'
>         param_check_##type(name, &(name));
> \
>         ^
> <scratch space>:46:1: note: expanded from here
> param_check_bool
> ^
> ./zdtmtst.h:84:35: note: expanded from macro 'param_check_bool'
> #define param_check_bool(name, p) __param_check(name, p, int)
>                                   ^
> ./zdtmtst.h:78:22: note: expanded from macro '__param_check'
>         static inline type *__check_##name(void) { return(p); }
>                             ^
> <scratch space>:47:1: note: expanded from here
> __check_help
> ^
> 1 error generated.
> <builtin>: recipe for target 'parseargs.o' failed

As far as I can tell, the functions __check_##name are generated in
order to check the argument type by the compiler.

For gcc, the "inline" keyword is enough to suppress the "unused function"
warning even when -Wunused-function is used. For clang, it's not the
case (see https://llvm.org/bugs/show_bug.cgi?id=22712).

A way to "use" the function is to use its name as a pointer and cast it
to void. This is what this patch does.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 16:00:14 +03:00
Kir Kolyshkin
e48a46f377 criu/mount.c: rm unused function
Commit 308741d removes all calls to path_length(), but the function
itself is still there. Now, clang complains that it is unused.

Remove it.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 15:00:10 +03:00
Kir Kolyshkin
02c3605c02 criu/filesystems.c: refactor binfmt_misc_restore_bme
The following error is emitted by clang:

>   CC       criu/filesystems.o
> criu/filesystems.c:280:13: error: variable 'ret' is used uninitialized
>    whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
>         } else if (bme->extension) {
>                    ^~~~~~~~~~~~~~
> criu/filesystems.c:287:6: note: uninitialized use occurs here
>         if (ret > 0) {
>             ^~~
> criu/filesystems.c:280:9: note: remove the 'if' if its condition is
>    always true
>         } else if (bme->extension) {
>                ^~~~~~~~~~~~~~~~~~~~
> criu/filesystems.c:272:9: note: initialize the variable 'ret' to silence
>    this warning
>         int ret;
>                ^
>                 = 0
> 1 error generated.

This code was a result of commit 398e7d3.

If we look closely, this is a false alarm, as "else if (bme->extension)"
is always true as it was checked before. But this is not very clear,
and the issue with clangs still needs to be fixed.

There are many ways to do so:

1. Initialize ret to 0. This is what initial version of this patch did.

2. Remove the always-true condition, like this:

	-	} else if (bme->extension) {
	+	} else {

In my opinion this would hurt readability.

3. Change the code flow, improving readability at the same time.

I believe that #3 is what this patch does. In addition, it fixes
handling of a few corner cases:

- an overflow in snprintf();
- a case when bme->name is NULL (as it is used for strlen/snprintf,
  there is a potential for SIGSEGV);
- a case of ret == 0 (currently there is no code flow that
  results in ret being 0, so it's just for the future).

[v2: use linux kernel style for 'else' after a block]
[xemul: Fix // comments ]

Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Acked-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 14:59:35 +03:00
Adrian Reber
64f964f071 Added --display-stats to the man page
Signed-off-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-24 14:59:35 +03:00
Pavel Emelyanov
db07f442d6 criu: Version 2.7
Not a lot this time, just a bunch of bugfixes and improvements.
A lot has happened in -dev branch around compel, hopefully the
next release will have it.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
v2.7
2016-10-17 11:30:31 +03:00
Andrei Vagin
2adf1fbb2b mount: don't overwrite mount flags by MS_STRICTATIME
It's typo fix. MS_STRICTATIME has to be added to other flags there.

travis-ci: success for mount: don't overwrite mount flags by MS_STRICTATIME
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-14 16:52:08 +03:00
Tycho Andersen
876c3a3c8b mnt: allow external slaves too
In particular, if the thing in criu's namespace is also a slave of
something in an external mount namespace (as it is in the tests), we won't
see the master, just the external slave. However, this also counts as an
"external master" because it is an external bind mount, just from something
that was itself a slave.

I'm not sure why the test broke, but it works on ubuntu 16.04 and fails on
16.10, so I suppose something with the debugfs mount configuration has
changed. I can look into it more if we're curious, but this patch fixes it
and should probably go in anyway.

Closes #223

travis-ci: success for mnt: allow external slaves too
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:51:08 +03:00
Andrei Vagin
fb4f28f00a proc_parse: use the static buffer to parse mountinfo
Currently a buffer is allocated on stack and its size is 1024.
Usually we use our static buffer to read proc files and its
size is 4096 (page size).

I know that this patch doesn't fix this problem completly,
it just does it less critical.

https://github.com/opencontainers/runc/issues/1070
travis-ci: success for proc_parse: use the static buffer to parse mountinfo
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:51:08 +03:00
Andrei Vagin
11adfc3422 zdtm: check pre-dump of shared memory
[root@fc24 criu]# python test/zdtm.py run -t zdtm/transition/shmem  --pre 3
=== Run 1/1 ================

======================== Run zdtm/transition/shmem in h ========================
cc -g -O2 -Wall -Werror -fno-strict-aliasing  -iquote ../lib/arch/x86/include -I../lib   shmem.c ../lib/libzdtmtst.a ../lib/libzdtmtst.a -o shmem
Start test
./shmem --pidfile=shmem.pid --outfile=shmem.out
Run criu pre-dump
Run criu pre-dump
Run criu pre-dump
Run criu dump
Run criu restore
Send the 15 signal to  33
Wait for zdtm/transition/shmem(33) to die for 0.100000
Test output: ================================
15:12:25.444:    33: FAIL: shmem.c:70: checksum mismatch: ea71000 109c9000

Cc: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:51:08 +03:00
Pavel Emelyanov
60ea192ceb parasite: Remove struct pid from parasite_ctl
Only real pid is used internally now.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:49:38 +03:00
Cyrill Gorcunov
524aeefdd0 criu: arch -- Fix more task_size prototype
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:49:38 +03:00
Pavel Emelyanov
8e85aed88e seize: Simplify processes_to_wait calc
Localize the processes_to_wait calculations in seize.c. In
order to distinguish dead tasks which has already been wait()-ed
from dead tasks that hasn't introduce internal 'zombie' state
for seize_wait_task().

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:49:38 +03:00
Pavel Emelyanov
5773ad84b3 seize: Simplify creds checkers
Don't do comparisons of creds insize core seizing routine. Instead,
pull the creds on the caller's stack and compare them there if
required.

At the same time more the proc_status_creds_dumpable() to the place
where it's only needed and make it static.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:49:37 +03:00
Laurent Dufour
6a1c0a071c arch: Introduce user_fpregs_struct_t on ppc64
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
[ldufour@linux.vnet.ibm.com: mostly rewrite to fix functional issue]
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>

Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:49:37 +03:00
Laurent Dufour
7925c1e115 ppc64: use vector128 type for Altivec data
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:49:37 +03:00
Pavel Emelyanov
f94c0ff7ed arch: Reintroduce user_fpregs_struct_t on x86
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
2016-10-13 15:49:36 +03:00
Pavel Emelyanov
8b248c02c9 arch: Introduce user_fpregs_struct_t on arm and aarch64
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Reviewed-by: Christopher Covington <cov@codeaurora.org>
2016-10-13 15:48:44 +03:00
Andrei Vagin
e674a7333d scripts: allow to skip travis specific parts in travis-tests
We are going to use this script for testing linux-next.

v2: remove bashism
travis-ci: success for scripts: allow to skip travis specific parts in travis-tests (rev2)
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:48:41 +03:00
Tycho Andersen
851b044027 timerfd: add support for CLOCK_BOOTTTIME
>From https://lwn.net/Articles/428176/:

"CLOCK_BOOTTIME is identical to CLOCK_MONOTONIC, except it also
includes any time spent in suspend (as currently measured by
read_persistent_clock()). This allows applications to get a
suspend aware monotonic clock."

So, I *think* all we have to do is allow the constant, because the only
handling that is different is how the kernel tracks the time.

The motivation for adding this is that new versions of systemd-resolved
(like what will ship in ubuntu 16.10) seems to open a BOOTTIME fd.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
CC: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:47:11 +03:00
Tycho Andersen
caf933bf29 timerfd: move the clockid check to dump time too
but let's keep it during restore, since there might be images around that
were generated before we did this check at dump.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
CC: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-13 15:47:11 +03:00
Pavel Emelyanov
78a3670ba8 parasite: Pass exec start point to parasite_prep_ctl
The parasite_prep_ctl() will become compel call, so it won't
have the code that scans CRIU's vma area list. For pure compel
users we'll need to add simple /proc/maps scanner that'd find
the entry point.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-10 12:49:28 +03:00
Kir Kolyshkin
c158ccdf23 handle-elf.c: whitespace cleanup
travis-ci: success for handle-elf.c: whitespace cleanup
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-10 12:49:28 +03:00
Tycho Andersen
5e1cfded38 images: rename NONE to CG_NONE
with newer versions of protobuf, I get:

./crit
Traceback (most recent call last):
  File "./crit", line 7, in <module>
    import pycriu
  File "/home/ubuntu/criu/crit/pycriu/__init__.py", line 2, in <module>
    import images
  File "/home/ubuntu/criu/crit/pycriu/images/__init__.py", line 2, in <module>
    from images import *
  File "/home/ubuntu/criu/crit/pycriu/images/images.py", line 52, in <module>
    from pb import *
  File "/home/ubuntu/criu/crit/pycriu/images/pb.py", line 35, in <module>
    from packet_sock_pb2 import *
  File "/home/ubuntu/criu/crit/pycriu/images/packet_sock_pb2.py", line 18, in <module>
    import sk_opts_pb2 as sk__opts__pb2
  File "/home/ubuntu/criu/crit/pycriu/images/sk_opts_pb2.py", line 23, in <module>
    serialized_pb=_b('\n\rsk-opts.proto\"\xe2\x02\n\rsk_opts_entry\x12\x11\n\tso_sndbuf\x18\x01 \x02(\r\x12\x11\n\tso_rcvbuf\x18\x02 \x02(\r\x12\x16\n\x0eso_snd_tmo_sec\x18\x03 \x02(\x04\x12\x17\n\x0fso_snd_tmo_usec\x18\x04 \x02(\x04\x12\x16\n\x0eso_rcv_tmo_sec\x18\x05 \x02(\x04\x12\x17\n\x0fso_rcv_tmo_usec\x18\x06 \x02(\x04\x12\x11\n\treuseaddr\x18\x07 \x01(\x08\x12\x13\n\x0bso_priority\x18\x08 \x01(\r\x12\x13\n\x0bso_rcvlowat\x18\t \x01(\r\x12\x0f\n\x07so_mark\x18\n \x01(\r\x12\x13\n\x0bso_passcred\x18\x0b \x01(\x08\x12\x12\n\nso_passsec\x18\x0c \x01(\x08\x12\x14\n\x0cso_dontroute\x18\r \x01(\x08\x12\x13\n\x0bso_no_check\x18\x0e \x01(\x08\x12\x14\n\x0cso_bound_dev\x18\x0f \x01(\t\x12\x11\n\tso_filter\x18\x10 \x03(\x06*6\n\x0bsk_shutdown\x12\x08\n\x04NONE\x10\x00\x12\x08\n\x04READ\x10\x01\x12\t\n\x05WRITE\x10\x02\x12\x08\n\x04\x42OTH\x10\x03')
  File "/usr/lib/python2.7/dist-packages/google/protobuf/descriptor.py", line 827, in __new__
    return _message.default_pool.AddSerializedFile(serialized_pb)
TypeError: Couldn't build proto file into descriptor pool!
Invalid proto descriptor for file "sk-opts.proto":
  NONE: "NONE" is already defined in file "rpc.proto".
  NONE: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "NONE" must be unique within the global scope, not just within "sk_shutdown".

this fixes that.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
CC: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-10-10 12:49:28 +03:00