- 14 Mar, 2017 40 commits
-
-
Cyrill Gorcunov authored
Here we rather suffle source code into directories preparing ground for future work. Basically all this files movements should end up in the following compel/ tree structure compel/ ├── arch │ ├── aarch64 │ │ ├── plugins │ │ │ └── std │ │ └── src │ │ └── lib │ ├── arm ... │ ├── ppc64 ... │ └── x86 ... This is architectural part, where each arch consists of plugins/, and src/. src/ stands for code needed by compel cli + lib ├── include │ ├── compiler.h -> ../../criu/include/compiler.h │ ├── elf32-types.h │ ├── elf64-types.h │ ├── int.h -> ../../criu/include/asm-generic/int.h │ ├── piegen.h │ ├── shmem.h │ └── uapi │ ├── compel.h │ └── plugins.h Common includes + uapi ├── plugins │ ├── fds │ ├── shmem │ └── std Plugins source code └── src ├── lib │ ├── handle-elf-32.c -> handle-elf.c │ ├── handle-elf-32-host.c -> handle-elf-32.c │ ├── handle-elf.c │ └── handle-elf-host.c -> handle-elf.c compel library ├── main.c ├── main-host.c -> main.c compel cli └── shared └── fds.c shared code between plugins and compel cli Note: cross-compile won't work for a while. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Will be used later. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
As we meet this before, I think, we should abort generation here. No point for making PIE with external symbols for us (at least, yet), so let's break build than find the problem at runtime. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
It's used in restorer to map compatible vDSO blob. When !CONFIG_COMPAT it's not needed and even more: vdso_fill_symtable_compat is macro and is undefined in that case. It will never shoot, as compat_vdso is always false for that case, but get rid of it. I also need to leave CONFIG_X86_64 here, as arch_prctl() is not defined for x86_32. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
The other way to solve this is to compile shared between CRIU and PIEs objects twice: without stack-protection and with environment choice. But I don't think it worth it. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
I think, we could transpher also `-m elf_i386' and `-m32' to compel output - but only in case if we will not support native x86_32 in compel (as they are wrong for native build). Or introduce something like compat_ia32 in compel option, not sure. Left in makefile for a while. Also it would be good to remove $(LD_R) in makefile and use compel output for ldflags, but that will be valid only when compel will support arm arch. Fixes (with the following patches): GEN criu/pie/parasite-compat-blob.h parasite_compat_blob: Error (compel/handle-elf-32.c:322): Unexpected undefined symbol: `__stack_chk_fail'. External symbol in PIE? Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Don't use compiler-provided memset in parasite. Fixes: commit 86434deba0b4 ("x86: dump TLS entries from GDT"). Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
As we will not support *native* 32-bit i386 build, I dropped some ifdefs, introducing instead of ifdef(CONFIG_X86_64) -- ifdef(CONFIG_COMPAT). CRIU should build now without ia32 Glibc and gcc-multilib support. Maybe I should add some warning that the build is made without compatible task support (or criu check should print that), will do as compat patches hit master. Fixes: #181 Cc: Cyrill Gorcunov <gorcunov@openvz.org> 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> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
I'll wrap all compatible code in this CONFIG_COMPAT define. As I'll wrap also compatible parasite generation in this, it's also makefile variable, rather than just C define. The test itself consists of including stubs-32.h, which is glibc6-i686 presence test and is compiled with -m32 option, which is test for gcc-multilib. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Andrew Vagin <avagin@virtuozzo.com> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Reviewed-by:
Cyrill Gorcunov <gorcunov@openvz.org> Acked-by:
Andrew Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Laurent Dufour authored
In is_required_syscall() req_sysnr is set according to the native mode so we can check the syscall number directly against it. No functional change expected. Cc: Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Laurent Dufour <ldufour@linux.vnet.ibm.com> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Target criu depends on all, so this is redundant and makes noise: if you had typed `make` without arguments, it has built compel firstly, if you had typed `make criu`, it has built protobuf images firstly. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
@gpregs_case is a bit vague name, lets define traditional @mode here. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Tried hard to save compile-time static type checking and make code more readable, hiding native/compat details in macros. I think, it's better now. Also BTW fixes: #188 (and compatible zdtm test) Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Reviewed-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
So, I made a mistake in find_syscall: it can't use arch_task_compatible to find out in which mode the application is (native/compat). The reason is that arch_task_compatible uses PTRACE_GETREGSET. And at the moment of find_syscall we haven't yet seized the task. In this patch I move syscall's number check right before injecting a syscall, where we have parasite_ctl with all needed information about task's mode. This makes error-path for wrong syscall number longer and subtler (includes curing now), but I think it's a corner-case, so as it makes error-less path to execute_syscall shorter and without additional ptrace syscalls, it's better. Reported-by:
Andrew Vagin <avagin@virtuozzo.com> Cc: Andrew Vagin <avagin@virtuozzo.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
ptrace_get_regs correctly returns error code in case of failure, but for debugging reasons let's add error printing in case of PTRACE_GETREGSET failed right after the call to ptrace(). Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrew Vagin authored
CID 163751 (#1 of 1): Big parameter passed by value (PASS_BY_VALUE) pass_by_value: Passing parameter regs of type user_regs_struct_t (size 224 bytes) by value. Signed-off-by:
Andrew Vagin <avagin@virtuozzo.com> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Cyrill Gorcunov authored
- use entry/end from linkage - use macros for segments - use C style comments Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Tested-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
When mapping compatible vDSO in restorer blob (with vdso_map_compat), we don't know if the kernel will map firstly vvar pages or vdso pages. So we attempt search by checking ELF header magic on those pages. Which leads to following "errors", which this patch hides: pie: 1: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 1: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 7: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 7: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 6: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 6: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 4: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 5: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 4: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> pie: 5: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic misma> (for two vvar pages and 5 processes being restored). Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Otherwise compiler nicely align it for us on 24 bytes. Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
The kernel patch "x86/signal: add SA_{X32,IA32}_ABI sa_flags" makes signal's ABI the same as sigaction's syscall ABI instead of per-thread's TIF_IA32 flag. So for delivering signals with compatible ABI, we need to call sigaction through raw int80 exception. This patch restores signals with int80: cr-restore part and PIE restorer's part lay in sigaction_compat.c, which compiled for criu binary and for restorer PIE. The PIE's part is needed strictly for setting SIGCHLD handler, other signal handlers are set in cr-restore (as it was before). Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
`make test COMPAT_TEST=y` will build all executable tests as i386 ELFs. For building tests, need the following libraries from multilib: libaio.i686 libaio-devel.i686 libcap-devel.i686 libcap.i686 Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Put dumped TLS descriptors back to GDT. Do it only if it was present. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Dump TLS with the help of SYS_get_thread_area. Primary for 32-bit applications, but this also may be used by mixed 64/32 bit code. I do not enable dumping for 64 bit unless we'll meet such code, but include 3 user_desc entries of TLS as not present in 64-bit images. That's arguable and I may include user_descs only for compat tasks. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
I prefer this to be done in callee, than in caller for simplicity. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
I need it to call sigaction from 32-bit code as kernel will set sigframe ABI according to sigaction call ABI. Also I will call {get,set}_thread_area to restore TLS entries. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Otherwise, we still have parsed x86_64 vdso symtable. After this: pie: 17917: vdso: Mapping compatible vDSO at 0x25000 pie: 17917: vdso: Parsing at 0x25000 0x29000 pie: 17917: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic m> pie: 17917: ismatch pie: 17917: vdso: Parsing at 0x26000 0x29000 pie: 17917: Error (pie/util-vdso-elf32.c:87): vdso: Elf header magic m> pie: 17917: ismatch pie: 17917: vdso: Parsing at 0x27000 0x29000 pie: 17917: vdso: PT_LOAD p_vaddr: 0x0 pie: 17917: vdso: DT_HASH: 0xb4 pie: 17917: vdso: DT_STRTAB: 0x1c0 pie: 17917: vdso: DT_SYMTAB: 0x130 pie: 17917: vdso: DT_STRSZ: 0x95 pie: 17917: vdso: DT_SYMENT: 0x10 pie: 17917: vdso: nbucket 0x3 nchain 0x9 bucket 0x270bc chain 0x270c8 Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
While restorering compatible application on x86-64, we need to parse 32-bit vDSO. By that reason I need _three_ compiled object versions for util-vdso: - for native parasite it's util-vdso.o - for compatible parasite it's compat/util-vdso.o - for restorer it's util-vdso.o and util-vdso-elf32.o Note, that I can't link compat/util-vdso.o to restorer, as it's i386 ELF which ld can't link to x86_64 ELF file. TODO: maybe I'll need to refactor and introduce generic CONFIG_COMPAT instead of those defined(CONFIG_X86_32). Fixes: pie: 27504: vdso: Mapping compatible vDSO at 0x25000 pie: 27504: Remap 0x7f3de3efa000->0x8048000 len 0x1000 ... pie: 27504: vdso: Parsing at 0xf7776000 0xf7778000 pie: 27504: Error (pie/util-vdso.c:87): vdso: Elf header magic mismatch pie: 27504: Error (pie/restorer.c:1540): Restorer fail 27504 (00.029188) Error (cr-restore.c:988): 27504 exited, status=1 (00.033072) Error (cr-restore.c:1870): Restoring FAILED. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Map here instead of park before unmap. TODO: need to check that mapped size is smaller than x86_64 vDSO. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
We need to do it in pure ia32 asm. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Their vDSO's pfn differ from native tasks. TODO: compute on dump compatible vDSO's pfn. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
As it has equall size for compat/native tasks. Fixes for compatible tasks: pie: Daemon waits for command (00.009247) Fetched ack: 7 7 0 pie: __fetched msg: 9 0 0 pie: Error (pie/parasite.c:106): sys_sigaction failed (-22) pie: __sent ack msg: 9 9 -22 pie: Error (pie/parasite.c:725): Close the control socket for writing Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Change page_xfer_dump_pages the way it could handle compatible iovs. Separated hole dumping in page_xfer_dump_hole and introduced iterator function get_iov which will return native iovec, converting compatible iovec if needed. Fixes: (00.009060) Fetched ack: 7 7 0 (00.009061) Transfering pages: (00.009062) buf 16/16 (00.009063) p 0x100008048000 [32841] (00.009101) Error (page-xfer.c:504): Only 65536 of 17592320561152 bytes have been spliced (00.009253) page-pipe: Killing page pipe (00.009263) ---------------------------------------- Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
struct iovec may have different size for dumpee. But that reason, pages dump will fail (with added debug to pie): (00.011440) page-pipe: Page pipe: (00.011441) page-pipe: * 1 pipes 8/523 iovs: (00.011442) page-pipe: buf 16 pages, 8 iovs: (00.011444) page-pipe: 0x8048000 3 (00.011446) page-pipe: 0xf7512000 1 (00.011447) page-pipe: 0xf76ca000 4 (00.011449) page-pipe: 0xf76cf000 1 (00.011450) page-pipe: 0xf76dc000 2 (00.011452) page-pipe: 0xf76e1000 1 (00.011454) page-pipe: 0xf7702000 2 (00.011455) page-pipe: 0xffdad000 2 (00.011470) page-pipe: * 0 holes: (00.011471) PPB: 16 pages 8 segs 16 pipe 0 off (00.011476) Sent msg to daemon 8 0 0 pie: __fetched msg: 8 0 0 (00.011479) Wait for ack 8 on daemon socket pie: sys_vmsplice for 16 pages 8 segs 0 off pie: buf 16 pages, 8 iovs: pie: 0x8048000 0 pie: 0x3000 0 pie: 0xf7512000 0 pie: 0x1000 0 pie: 0xf76ca000 0 pie: 0x4000 0 pie: 0xf76cf000 0 pie: 0x1000 0 pie: Error (pie/parasite.c:93): Can't splice pages to pipe (0/16) pie: __sent ack msg: 8 8 -1 Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Compatible parasite will use standard types, which are sized as _args_compat structures in "parasite-compat.h". Sometimes I miss high-level overloading in C. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Generic code uses raw syscall numbers for: - syscall_seized, to execute through parasite control needed syscall; - parasite_stop_on_syscall, to trap couple of tasks on needed syscall. As syscall numbers may differ (and differ for x86) between native and compatible mode, we need proper syscall wrapper here. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Seems like, offset was broken. And it had typo: leal -> movl (according to 64-bit parasite header), as cmd parameter is int (not pointer to int) in parasite_service: int __used __parasite_entry parasite_service(unsigned int cmd, void *args) Fixed - loads good now. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Do pure 32-bit sigreturn. Change code selector, do 0x80 rt_sigreturn. We should have here remapped 32-bit vDSO, all should be fine. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-