This patch introduces the following changes:
1) writing of shmid value into vma_area->fd instead of
waiting for shared memory region is open by parent,
reopen it and dump fd.
2) new syscall support: sys_shmat
3) use sys_shmat() to map memory region in restorer's
mapping function if vma flag VMA_AREA_SYSVIPC is set.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
SYSV IPC segment map will be added there in further patch in the series
Signed-off-by: Stanislav Kinsbursky <skinsbursky@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Returning shmid value of not enough, because SYSV IPC shmid equal to zero is a
valid value.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
This patch introduces the following changes:
1) introduces new flag VMA_AREA_SYSVIPC to mark corresponding vma entries.
2) enhance task /proc/<pid>/maps parsing to obtain first 5 letters of mapped
file. If device major file belong to ins equal to 0 (tmpfs) and it's name
starts with "/SYSV", then this mapping is considered as SYSV IPC and
corresponding vma entry status is updated with VMA_AREA_SYSVIPC flag.
3) omit dumping of mapping pages for SYSV IPC vmas.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
* 'zdtm' of https://github.com/avagin/crtools:
zdtm: remove white spaces
zdtm: transmit to crtools dump
zdtm: don't kill test processes in case an error
These defines are already provided by unistd.h, and the only user
is log.c which already includes unistd.h.
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
v2: New "MSG_STEAL" functionality is used
Signed-off-by: Stanislav Kinsbursky <skinsbursky@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
* avagin/zdtm:
zdtm: transmit to crtools dump
zdtm: don't kill test processes in case an error
zdtm: add static/shm test to IPC ns tests list
zdtm: don't wait in IPC queue on message operations
- mmap_seized returns only NULL on error, drop
redumdant test
- setup control block in one group
- no need for err_free label, xfree handles NULL easily
- prepare registers for munmap_seized call on error path
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
- err_restore_full label is redundant
- must try to restore poked area if it's
parially corrupted
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
It actually not a problem since we never reach a tail
out of blob, but better to be on a safe side (after
all there is no guarantee that .data section will not
end up exactly at blob final bytes).
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
They are not needed at moment but will be needed at
parasite/restorer code rework time, so add them now
just to not forget.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
It's pretty convenient to have asm generated code
at hands if hunting weird problems.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
...and move tags/cscope removal to it.
'make clean' is traditionally used to remove all
compiler-generated stuff in order to do a clean rebuild.
'make distclean' cleans more, it is used to prepare sources
for 'make dist' (creating a source tarball).
It is unfortunate to find out you have to run 'make tags cscope'
every time after 'make clean'.
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
In the beginning it was the Word, and the Word was .space.
Later, .skip was introduced as a synonym for .space,
initially only for 680x0 platform.
But the sole reason for this patch is that I use clang/llvm
to check the code and unfortunately it does not understand .skip,
printing long ugly warnings I'd like to avoid.
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
This name for the structure is obfuscating, because the structure
will be used also for queues and semaphores sets migration.
This patch renames this structure int ipc_desc_entry. It also renames
all related functions and prints to reflect structure name change.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Since we now have the parasite memory shared with crtools process we
can just memcpy this data between them.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
I don't like that we poke the parasite into remote space with 4k calls
to ptrace. Now we have the /proc/pid/map_files/ dir which helps us sharing
a mapping with some other process.
Use this -- map the remote area for parasite locally and put the parasite
blob into it with simple memcpy.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
In fact all we need for parasitic syscall is -- original regs and some
regs with syscall args to work on. The former one is obtained in the
infect/cure code and the latter one is located (and copied from orig)
nearby.
That said, we can simplify all the regs passing-down code by removing
intermediate instances and utilizing the top-level reg-s for this.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
No need in getting regs one more time -- we have the orig_regs at hands.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
There's no need in 3 instances of regs in arguments. One is more than enough.
Plus, this one can be made static.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>