- 24 Oct, 2016 40 commits
-
-
Pavel Emelyanov authored
travis-ci: success for criu: Remove asm/ includes from non-arch sources Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
travis-ci: success for criu: Remove asm/ includes from non-arch sources Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
travis-ci: success for criu: Remove asm/ includes from non-arch sources Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
travis-ci: success for criu: Remove asm/ includes from non-arch sources Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
travis-ci: success for criu: Remove asm/ includes from non-arch sources Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
travis-ci: success for criu: Remove asm/ includes from non-arch sources Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Cyrill Gorcunov authored
The idea is to have one place for headers which are shared between subprojects (zdtm, criu, compel). travis-ci: success for Add directory for common headers (rev3) Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
Patches moving code around and changing packages list conflict with each other all the time. Split these two :) travis-ci: success for travis: Put package list in a variable Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Since cr-time binfmt_misc is mounted regardless of mnt_ns level, it's need just not to be over the system, make parse method in consistent state with this behaviour. Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kir Kolyshkin authored
Option --leave-stopped can now be used during restore, but this was not reflected in the man page. [v2: fix wording] https://github.com/xemul/criu/issues/215 travis-ci: success for criu.8: document restore --leave-stopped (rev2) Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
If p->mountpoint is "/", off will be 0 and we will try to acess path[-1]. On Tue, Sep 20, 2016 at 05:17:27PM +0300, Kirill Tkhai wrote: > > > > int off = 0; > > > > ... > > > > if (p->mountpoint[1] != 0) /* not / */ > > off = snprintf(path, len, %s, p->mountpoint); > > if (path[off - 1] == '/') /* p->mountpoint = ./ */ > > > > ^^^ > > The above looks like off-by-one when off == 0. Is there is > > a condition which guarantees that off is not zero? travis-ci: success for mount: skip '/' only if it is there Reported-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Cc: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Acked-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Mike Rapoport authored
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>
-
Mike Rapoport authored
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>
-
Mike Rapoport authored
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>
-
Pavel Emelyanov authored
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>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
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>
-
Kirill Tkhai authored
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>
-
Cyrill Gorcunov authored
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>
-
Ruslan Kuprieiev authored
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>
-
Tycho Andersen authored
* 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>
-
Kir Kolyshkin authored
Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
It is easier to handle it this way Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kir Kolyshkin authored
Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
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>
-
Kir Kolyshkin authored
Commit 308741d0 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>
-