Commit graph

7083 commits

Author SHA1 Message Date
Pavel Emelyanov
6ae4a97309 rpc: Report back first error message on failure
When running criu in swrk mode the client typically wants to know
the reason of failure. Right now criu reports back NOTHING but the
fact that dump/restore/etc fails. We've tried to address this by
introducing the cr-errno engine, but it doesn't seem to be informative
enough and is hard to maintain -- adding new errno-s is boring :(

I propose to report back the first message with ERROR level upon
failrure as __typically__ the very first error message indicates
that proceeding is impossible and criu rolls back (generating more
error messages, so it's crucial to know the very first one).

If we ever meet the situation that the first pr_err/pr_perror doesn't
cause criu to exit, this printing should be fixed to be pr_warn.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
2016-09-06 19:31:21 +03:00
Pavel Emelyanov
0a4b21032c service: Factor out err setting
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
2016-09-06 19:31:21 +03:00
Cyrill Gorcunov
06e25b1841 seize: collect_pstree -- Add missing error sign return
If we can't freeze process don't forget to return
error sign, otherwise we continue operating over
nonfrozen processes, leading into various errors.

Signed-off-by: Cyrill Gorcunov <gorcunov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Eugene Batalov
40a7f3854f test: fix race in transition/maps008 that lead to fail of test
Running test/zdtm.py run -t zdtm/transition/maps008 --snap --pre 30
in a loop I got test failure with "Mem differs"
error each ~20 minutes. The cause of the bug is in lack of
synchronization between processes that still do datagen stage of
test and processes that already do datacheck stage of test.
As a result we can get "Mem differs" error if:
1. Process P1 being on datacheck stage fetches a byte with
   offset X from ashmem vma VMA1 into CPU register.
2. Process P2 still being on datagen stage changes byte with offset X
   in the same ashmem vma VMA1.
3. Process P1 fetches byte with offset X from another ashmem vma VMA2
   mapped to the same physical memory as VMA1.
4. Process P1 compares two fetched bytes and finds out that they
   have different values.
5. Process P1 reports "Mem differs" error.

Race is fixed by waiting for all processes to exit datagen stage
before proceeding to datacheck stage.

Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Andrei Vagin
42058dc7ce test: don't do MS_REC|MS_PRIVATE for host mounts
Here is a race when someone umounted something and this operation
isn't propagated into our namespace.

CRIU                                | Another process
-----------------------------------------------------------------
pivot_root(".", put_root)           |
mount(put_root, MS_REC|MS_PRIVATE)  |
                                    | umount /xxx/yyy
                                    | umount /xxx -> EBUSY
umount(put_root)

We do this to not affect mounts in put_root, but we can mask
these mounts as slave and this will work for us and for external
users.

Reported-by: Mr Travis
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Pavel Emelyanov
c220c2f970 files: Tune up false perror message
When linkat fails in uns we print error (!) and then sometimes
try some other way to linkat anyway %). Fix this place not
to produce the error message all the time, but only when it's
needed.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Andrei Vagin
de2b4261dd pagemap: add an ability to disable pagemap cache
We found that the 3.19 Ubuntu kernel has a bug and
the pagemap cache doesn't work properly on this kernel.

Unfortunately Travis-CI allows to create intancies only with this kernel,
so we need to add this workaround.

https://github.com/xemul/criu/issues/207

Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Cyrill Gorcunov
95ae8ae566 restorer: Eliminate possible shadowing of @task_entries
Lets make name an unique to not shadow the global instance.
On gcc-6.x series this doesn't cause problems but
did on gcc-4.9 series.

Nikolay Borisov <kernel@kyup.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Cyrill Gorcunov
b5d2b6033a pstree: Make restore_finish_stage helper to use holder variable
The @task_entries variable is declared as external in
criu/include/pstree.h and restore_finish_stage refers
to it implicitly. This is a bad habbit because the name
get propagated into pie code where we have a local
static variable, which eventually may shadow the former
copy with gcc 4.9 series as been reported by Nikolay.

Lets make restore_finish_stage helper to take variable
name explicitly.

Reported-by: Nikolay Borisov <kernel@kyup.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Andrei Vagin
4fd8f39669 travis: catch core dump files in error cases
It is very hard to investigate travis fails, when something is segfaulted.

Let's add our own core file handler which will provide all required
information for us. Now test/abrt.sh shows a process tree,
process mappings, registers and backtraces.

v2: change a variable name
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Thanked-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Eugene Batalov
dd7cfba0ae test: new jenkins script for testing of --leave-stopped option
There is no similar jenkins script that tests similar options now.
So make a new script.

Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Eugene Batalov
a43d29b7ef zdtm: implement testing of --leave-stopped criu option
Test does its checking both after dump and after restore.
Checking is done in the following way:
1. Check that every ps tree process is stopped or dead
2a. SIGKILL every ps tree process if checking after dump
2b. SIGCONT every ps tree process if checking after restore

Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Andrei Vagin
985fbaac0e zdtm.py: don't forget to wait a child process
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:20 +03:00
Andrei Vagin
ada6312984 zdtm: don't trigger BUG if futex returns EINTR
It can hapen in tty tests, where we get SIGHUP.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Andrei Vagin
18c0fbc27c zdtm.py: check testname.out.inprogress in error cases
If a test crashes, its logs may be in testname.out.inprogress.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Andrei Vagin
9f0c8075b6 zdtm.py: used tabs for indentation
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Andrei Vagin
cd10a09fee travis: allow to run up to two tests in parallel
It works faster and checks that two criu processes can work concurrently.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Pavel Tikhomirov
54febc11f4 zdtm/ipc_namespace: add msg_next_id, sem_next_id, shm_next_id
as these sysctls can not be set to -1(default) leave them uninitialized
sometimes

https://jira.sw.ru/browse/PSBM-48397
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Eugene Batalov
40f56d5dc3 test: add test for anon shmem dedup
Main test features:
- Non trivial ps tree with non trivial anon shmem regions
  (no such test exists now).
- Each ps tree process continuously writes parts of anon shmem
  vmas and validates these writes after restore
  (required for dedup testing).
- Checking simultaneous changing of anon shmem contents in different
  processes.

Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Fyodor Bocharov
eadf47c609 shmem: implement manual anon shared memory dedup
We use the same dumping and restoring mechanism for anon private and
anon shared memory. Because of this we can implement manual deduplication
of shared anon memory the same way we do it with private anonymous memory.
Also we need to rename pid parameter of cr_dedup_one_pagemap to id because
now we can pass either pid or shmid there and the actual meaning depends
on flags: PR_TASK is for pid, PR_SHMEM is for shmid.

Signed-off-by: Fyodor Bocharov <bocharovfedor@gmail.com>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Eugene Batalov
6d192fabc6 shmem: add anon shmem dumping to predump command
As anon shmem dumping supports page changes tracking
we can call it during predump.

Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Fyodor Bocharov
2986751d9a shmem: dump anon shared memory pages according to their PME derived states
This allows us not to dump anon shmem pages that weren't changed since
last dump. We dump each anon shmem vma using page-xfer. page-xfer does all
magic with storing "in_parent" field in pagemap-entry.
When restoring we simply read every page with page-read and it does
all magic of reading from right place in image hierarchy.
auto-dedup on restore is already implemented by page-read so we don't need
to code it.

Signed-off-by: Fyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Fyodor Bocharov
0ddfaa9b9c shmem: implement PME derived pages state tracking
Anon shmem pages state tracking allows us not to dump unused
anon shmem pages at all.

To track anon anon shmem pages state we create a bitmap.
Each 2 bits in this bitmap correspond to particular page.
Each 2 bits store one page state:
PST_DONT_DUMP, PST_DUMP, PST_ZERO, PST_DIRTY.
This number of states is enough to decide what to do with the page
on dump.

With anon shmem there is a peculiarity. To decide what state page has
we need to examine its PME bits in all the processes that share it.
So page state derived from PME bits in one process may be overriden
by page state derived from PME bits from another process.
See implementation of this overrides in the patch.

Signed-off-by: Fyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Eugene Batalov
531c4aa421 mem: export should_dump_page() from mem.c
We'll use it to decide should we dump anon shmem page or not.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:31:19 +03:00
Fyodor Bocharov
ebae2651d1 shmem: pass anonymous shmem pagemap to add_shmem_area
So we would be able to analyze pagemap bits for each
anonymous shmem page and decide on its dirtiness and usage
by dumpee process.

Signed-off-by: Fyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:02:36 +03:00
Andrei Vagin
200ead9a88 proc: move parts about fdinfo from proc_parse.h into fdinfo.h
proc_parse.h is too generic and it is a bad idea to include it everywhere.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:24 +03:00
Andrei Vagin
62a8493810 cgroup: move functions about cgroup out of proc_parse.h
It removes a dependence between proc_parse.h and cgroup.h

v2: type fix in the subject

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:24 +03:00
Andrei Vagin
d0d117986e mount: move functions about mounts from proc_parse.h
It remove a dependece between  proc_parse.h and mount.c.

v2: type fix in the subject

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:24 +03:00
Andrei Vagin
f2d55d9483 vma: don't define dump_filemap_t twice
There are files that include both vma.h and proc_parse.h and
since dump_filemap_t is declared in both some gccs generate
a warning.

Warning: proc_parse.h:131: note: previous declaration of ‘dump_filemap_t’ was here
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:24 +03:00
Nikolay Borisov
afea47ea24 Move headers around to fix issues on custom-built glibc
restorer.h eventually includes fcntl-linux.h system file, which
indiscriminately defines F_SETPIPE_SZ/F_GETPIPE_SZ. But those
are also defined by CRIU's own headers in config-base.h. The latter
contains ifdef guards, however in arch/x86/crtools.c it's included
after restorer.h which causes gcc warnings for macro redefinition.

Fix this by reordering the 2 headers, ensuring the ifdef guards in
config-base.h actually work.

Signed-off-by: Nikolay Borisov <kernel@kyup.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:23 +03:00
Dmitry Safonov
42212bf8da futex/lock: simplify a little futex_wait_if_cond()
Impact: cleanup, improve readability

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:23 +03:00
Dmitry Safonov
f1d7964e26 parasite: align parasite args with 4 bytes
>From the commit 64e74fab05 ("parasite: handle errors while a transport
socket is being created"), we have futex in parasite init args to
synchronize parasite and criu during initialization.
And man futex(2): "On all platforms, futexes are four-byte integers that
must be aligned on a four-byte boundary."
This is checked by kernel in get_futex_key():
	if (unlikely((address % sizeof(u32)) != 0))
		return -EINVAL;

So, we need to align parasite arguments on four bytes, while mapping
of parasite blob on page-aligned address will guarantee that it'll
be aligned on four bytes in memory.

Fixes:
(00.013468) -----------------------
(00.013470) Putting tsock into pid 22043
(00.014024) Error (criu/parasite-syscall.c:541): futex() returned an unexpected error: -22
(00.014026) Error (criu/parasite-syscall.c:541): BUG at criu/parasite-syscall.c:541

Cc: Andrew Vagin <avagin@virtuozzo.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:23 +03:00
Andrei Vagin
1b809cda61 parasite: don't use a process stack to unmap a parasite blob
Process private memory was dumped at this moment, but a memory
tracker isn't reseted, so we can't use a process memory here.

https://github.com/xemul/criu/issues/203

Cc: Eugene Batalov <eabatalov89@gmail.com>
Cc: Fyodor Bocharov <fbocharov@yandex.ru>
Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
Fixes: 101e3ba49d08 ("mem: reset SOFT_DIRTY bits after dumping of all vmas in the process")
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:23 +03:00
Tycho Andersen
a4b48a2dcc cgroup: actually detect cgroupns bind mounts correctly
Initially, the cgroupns patchset that went into the Ubuntu kernels had the
nsroot= argument in mountopts, which allowed us to distinguish between
cgroupfs mounts. The upstream kernel doesn't have this (the reasoning was
that it showed up in the root field of mountinfo), so all cgroup mounts
look idential if we don't consider the root mount, and we wrongly detect
the mounts as bind mounts. Instead, let's remember the root path and
compare this when considering when a mount is a bind mount.

This patch is a little ugly because it intorduces cgroup specific behavior
into the generic code, which we've thus far been able to avoid. One way to
deal with this might be able to add a ->sb_equal hook to the fstype struct
that could compare mountinfos' superblocks, and then fall back to
mounts_sb_equal if that isn't present. Or we can leave this specific code
in the generic bits until more of these appear. Either way is fine with me.

v2: move the cgroup specific code to mounts_sb_equal()

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:23 +03:00
Pavel Emelyanov
7b5de25f24 Deprecate separate images for rlimits, itimers and posix-timers
Out-of-core rlims and timers existed before 1.3, so people trying
to restore from images generated of this old CRIU would have to
upgrade.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:22 +03:00
Pavel Emelyanov
8c063fd23f criu: Introduce the --deprecated/CRIU_DEPRECATED option
This is the option that would enable the deprecated (to be removed)
functionality. For convenience it's also possible to set one via
the environment.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:22 +03:00
Pavel Emelyanov
c7e58be701 files: Don't even try to move service descriptors
When serving out fds in files engine we _may_ goto move_fd_from()
call on the recently added service transport fd.

Avoid this theoretical situation.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
2016-09-06 19:00:22 +03:00
Pavel Emelyanov
e7e9ece13e files: don't create a transport socket for each file ++
The same thing as in e46ba88614 exists in pipes, unix sockets and
ttys, so let's re-use the service transport fd there as well.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:22 +03:00
Tycho Andersen
54253380d5 cgroup: treat memory.oom_control specially too
Similar to f444f7fac40, we need to treat memory.oom_control as a "special"
property and try not to write its default value, since in the 3.11 kernel
it can't be written when memory.use_heirarchy is true, which is the
default.

CC: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:21 +03:00
Andrei Vagin
379215e1f1 zdtm: check a case when a root of sub-mntns is read-only
It's what we have when ReadOnlyDirectories=/ is set for systemd services.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:21 +03:00
Andrei Vagin
0661a8a4bd mount: don't create a temporary directory if /tmp exists
pivot_root requires a place where to move an old root. Currently
a temporary directory is created for that, but it doesn't
work if the / directory is read-only.

Actually we can use any existing directory. In this patch,
criu tries to use /tmp and only if it doesn't exist,
criu creates a temporary directory.

https://bugs.openvz.org/browse/OVZ-6778

v2: don't give a constant string to mkdtemp
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:21 +03:00
Dmitry Safonov
043fd0ee6c travis: turn on alpine build
Cc: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:21 +03:00
Fyodor Bocharov
5d128a49a3 mem: generalize page_in_parent function and make it extern
If we want to dedup anon shared memory we need to call page_in_parent.
So we need to make it extern.
Also in case of anon shared mem we have only 1 bit per page so we have to
change page_in_parent signature.

Signed-off-by: Fyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 19:00:05 +03:00
Fyodor Bocharov
ea8b5dab4b page-read/xfer: add ability to open image hierarchy for shmem
In order to restore deduplicated anonymous shared memory we need
to open it's parent pagemap images. Code that opens parent pagemap
images already exists for anonymous private memory. All we need to do
is to remove couple of checks from existing code. Also we need to rename
pid to id because now we can pass either pid or shmid and the actual
meaning depends on pr_flags.

Signed-off-by: Fyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:27 +03:00
Fyodor Bocharov
740305be9b proc_parse: collect longest shared vma size
To dedup anon shared memory we need to know its longest size so we could
create page cache of appropriate size when dumping pages.

Signed-off-by: Fyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:27 +03:00
Pavel Tikhomirov
f960e432f6 ipc/sysctl: c/r kernel.{msg_next_id,sem_next_id,shm_next_id}
These are only three left in ipc_kern_table which we haven't
checkpointed yet, I'm not sure if somebody really uses them
except criu, but to be consistent, beter not to change them
while c/r.

v3: do one sysctl_op for all xxx_next_id(as sysctl_op is quiet slow)
v4: do only one sysctl_op in ipc_sysctl_req
v5: do msg*_default only if have /proc/sys/fs/mqueue same as other
ones from fs/mqueue

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:26 +03:00
Dmitry Safonov
df81b884d4 test: add printf-attribute to test_msg
...and fix misprints that weren't caught before.

I guess, I never fixed that much (possible) bugs by one commit, heh.

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:12 +03:00
Dmitry Safonov
c220f6da46 sigframe: prepare macro helpers for two sigframes
As on x86 compat/native sigframe differ, I need to generalize/modify
sigframe macro helpers having in mind:
- SIGFRAME_OFFSET differ between native/compat tasks, so it takes
  sigframe parameter now, which will be used in following patches
  (also renamed it in RT_SIGFRAME_OFFSET to complement other macros)
- RT_SIGFRAME_FPU is now pointer, because each caller takes result's
  address with &RT_SIGFRAME_FPU(...)
- sigreturn_prep_fpu_frame now takes rt_sigframe parameter, as
  address of fpu_state pointer on x86 will depend on native/compat
  frame type, so I check local sigframe's type and count address
  for rsigframe. (See in the very next commit).

Cc: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Cc: Christopher Covington <cov@codeaurora.org>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:11 +03:00
Dmitry Safonov
3a0c6fdd85 arm/restorer: fix {,rt_}sigframe typo
sigreturn_prep_fpu_frame is no-op for arm, but I think it's better
to fix it while macro correctly expands in sigframe.c - it
may change in some future.

Cc: Christopher Covington <cov@codeaurora.org>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:11 +03:00
Dmitry Safonov
e625ca7259 sigframe: introduce SIGFRAME_MAX_OFFSET
For x86 there are different SIGFRAME_OFFSET for native and compatible
tasks. In the next patches I will make SIGFRAME_OFFSET(rt_sigframe)
macro (depending on rt_sigframe).

As RESTORE_STACK_SIGFRAME used only for allocation sizes,
I don't want to introduce RESTORE_STACK_SIGFRAME(rt_sigframe)
dependency on rt_sigframe type. Let's just use for this porpose max
sigframe offset of native/compat tasks.

Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-09-06 18:58:11 +03:00