Commit Graph

104 Commits

Author SHA1 Message Date
Tomoki Shirasawa
e5d3407d8e child mcexec don't print signal terminate message 2014-07-29 11:10:11 +09:00
Balazs Gerofi bgerofi@riken.jp
c83e80ad91 execve(): clear host user-space PTEs before context switching 2014-07-28 18:57:56 +09:00
Tomoki Shirasawa
17730617e1 when wakeup for syscall and recieve signal occur in the same timing, a program is freezed. 2014-07-25 10:54:30 +09:00
Tomoki Shirasawa
10190e9ed6 prepare for a condition variable for each process. (Redmine#193) 2014-07-25 09:17:43 +09:00
Tomoki Shirasawa
2f4f3628f9 support tgkill 2014-06-10 10:42:29 +09:00
Balazs Gerofi bgerofi@riken.jp
2331309d2f mcexec: use optind instead of shifting argv[] for arguments passing to remote app 2014-05-27 17:52:56 +09:00
Balazs Gerofi bgerofi@riken.jp
514d75b685 execve(): supporting syscall and mcexec modifications 2014-05-22 17:39:13 +09:00
Balazs Gerofi bgerofi@riken.jp
badb450153 more detailed report in memory management error path 2014-05-22 17:27:39 +09:00
Balazs Gerofi bgerofi@riken.jp
6a8e75dda0 fix argc bug 2014-05-22 17:11:10 +09:00
Balazs Gerofi bgerofi@riken.jp
6ca8b77cf2 fix argv/argc bug 2014-05-22 16:39:07 +09:00
Balazs Gerofi bgerofi@riken.jp
84c18ef38e MCEXEC_UP_TRANSFER: generalize MCEXEC_UP_LOAD_IMAGE ioctl() to allow transfer in both directions 2014-05-22 12:42:23 +09:00
Balazs Gerofi bgerofi@riken.jp
f810aa56b8 refactoring mcexec's main() in preparation for execve() 2014-05-21 21:55:49 +09:00
bgerofi@riken.jp
22d9d6d3a6 use dprintk() for per process data structure debug messages 2014-05-19 12:49:36 +09:00
bgerofi@riken.jp
81a78be20a clean up per process structure in exit_group() and fix wait4() on self bug 2014-05-19 12:49:36 +09:00
Balazs Gerofi bgerofi@riken.jp
426c67861c introduction of mcctrl_per_process data to keep track remote page tables on a per-process basis 2014-05-13 00:22:56 +09:00
Balazs Gerofi bgerofi@riken.jp
a5b8d388e9 dprintf exit status 2014-05-12 10:30:39 +09:00
Tomoki Shirasawa
cc8317643e SIGPIPE fix (ltp writev) 2014-04-25 08:43:08 +09:00
Balazs Gerofi bgerofi@riken.jp
0e348e6295 SIGCHLD and wait4(), i.e. wait()/waitpid() implementation 2014-04-23 13:33:18 +09:00
NAKAMURA Gou
39a86fad18 support execute disabled stack 2014-04-11 14:59:47 +09:00
NAKAMURA Gou
da81cd2d1d mcexec: copy a pathname string of open(2) safely
When a open system call request is delegated, mcexec will check whether
a path name is known one such as "/proc/meminfo" and "/proc/cpuinfo".
During this check, if mcexec causes a SIGSEGV or SIGBUS signal,
mcexec will begin a loop, because mcexec has a signal handler which
returns simply.
2014-04-03 15:27:49 +09:00
Balazs Gerofi bgerofi@riken.jp
cf442e6a14 fork(): preliminary version (no wait()/waitpid() support yet) 2014-04-02 14:07:38 +09:00
Balazs Gerofi bgerofi@riken.jp
391b69e8c4 refactor mcexec's main and separate signal and syscall thread initialization 2014-04-02 14:04:55 +09:00
Balazs Gerofi bgerofi@riken.jp
b01b31f04d use GFP_ATOMIC in interrupt context 2014-03-28 18:43:34 +09:00
Balazs Gerofi bgerofi@riken.jp
ccd770ba24 use per-process wait queues for system call request processing in mcexec so that multiple processes can share the per-core system call channels 2014-03-27 19:31:42 +09:00
Balazs Gerofi bgerofi@riken.jp
51f75d9ba8 mcexec: options for target CPU core ID where application is executed 2014-03-27 14:58:26 +09:00
Tomoki Shirasawa
74339586d5 change dma_buf size 256MB -> 4kB 2014-02-07 10:57:50 +09:00
NAKAMURA Gou
fcbaa9726c correct the syscall return type
Long size syscall return values such as shmat()'s and lseek()'s are
broken, because lower 32 bits are only returned.
2014-02-05 11:30:57 +09:00
NAKAMURA Gou
bdc945cb34 mcexec: wait for the signal to be received
The mcexec may send a signal to itself in order that the mcexec
terminates abnormally.
Generally, the signal is delivered to the thread which sent the signal.
In this case, the signal terminates the mcexec immediately.

However, if the signal is delivered to another thread,
the thread which sent the signal can call exit(3)
before the signal terminates the mcexec.
2014-01-24 20:22:54 +09:00
NAKAMURA Gou
069bb10a02 make mcexec ignore garbage request
When a signal is forwarded from McKernel,
ioctl(MCEXEC_UP_WAIT_SYSCALL) may return EINTR error.
In this case, though no syscall request has been received,
the mcexec starts to process the syscall requst that is garbage.
2014-01-24 20:20:45 +09:00
NAKAMURA Gou
c421965542 relocate a program interpreter to the map_start
This commit makes a system call that dereferences a NULL pointer fail.
2014-01-14 18:55:16 +09:00
NAKAMURA Gou
6992b829a0 delegate the open(2) with the generic forwarding.
This commit solves a problem that causes getpwnam()/getpwuid() to return
NULL.
2014-01-14 18:50:20 +09:00
NAKAMURA Gou
afc38718a0 add MCEXEC_UP_STRNCPY_FROM_USER
It allows a mcexec to execute the strncpy_from_user().
2014-01-14 18:50:19 +09:00
Tomoki Shirasawa
a8c249ddaf signal (part 1) 2014-01-07 11:57:57 +09:00
Tomoki Shirasawa
9926d469d8 remove debug print 2013-12-18 15:33:37 +09:00
Tomoki Shirasawa
96576aaee7 fix general protection fault caused by SIGALARM 2013-12-16 13:45:45 +09:00
Tomoki Shirasawa
8e4cbfeea1 print exit code or signal, if stderr is a tty 2013-12-10 14:45:37 +09:00
Tomoki Shirasawa
daec3b2f32 propagate exit code and signal 2013-12-10 14:40:22 +09:00
Tomoki Shirasawa
e5890aa949 typo fix 2013-11-14 16:27:11 +09:00
Tomoki Shirasawa
3f60324d4e add copyright 2013-11-14 15:55:00 +09:00
NAKAMURA Gou
bbbc6e1570 add shared mapped file (in progress)
implemented:
- Pages can be shared between maps.
- A change made to a map is written to the file, at munmap().

not yet implemented:
- VM operation during page IO execution.
  Because page IO is executed with VM's lock.
- Page IO, which does not change a file size with any case.
  When munmap() races with truncate(), the file size may be changed
  illegally.
2013-11-11 18:18:33 +09:00
Naoki Hamada
3c490dcfab Added <sys/resource.h> which is required by getrlimit(2).
modified:   executer/user/mcexec.c
2013-11-07 00:29:17 -08:00
NAKAMURA Gou
bdc02bb687 refuse the write to a read-only memory
It was able to change a read-only memory using a system call that
forwarded to host.

To fix this, when read-only mmap(), it places read-only vm_area in the
mcexec's space.
2013-11-06 16:06:58 +09:00
NAKAMURA Gou
a80d11cde5 prevents MCKERNEL_RLIMIT_STACK from overwriting
When mcexec reduces a stack, mcexec stores the original RLIMIT_STACK
in environment variable MCKERNEL_RLIMIT_STACK.
A fix to prohibit overwrite of this time.

Therefore, the value of RLIMIT_STACK of the McKernel's process is
decided in the following order.
(1) If environment variable MCKERNEL_RLIMIT_STACK exists; the value.
(2) A value of RLIMIT_STACK in the mcexec starting.
2013-10-30 14:28:32 +09:00
NAKAMURA Gou
011ef60c4b support decimal numbers at MCKERNEL_RLIMIT_STACK 2013-10-30 14:28:32 +09:00
NAKAMURA Gou
d557ba84d6 exclude interpreter's segment from data region
When an interpreter is located on the lower address (e.g. 0x0),
the text region is included in data region.
A fix to avoid this.
2013-10-30 14:28:32 +09:00
NAKAMURA Gou
27172ad413 support private mapped file 2013-10-15 12:30:41 +09:00
NAKAMURA Gou
603ef85454 mcexec: add a upper limit of the stack size
- When the stack size is greater than 1 GiB, reduced to 10 MiB.
- To achieve a reduction of the stack, restart itself using the exec().
- By using the environment variable MCKERNEL_RLIMIT_STACK,
  tell to McKernel the stack size of the original.
2013-10-11 22:36:16 +09:00
NAKAMURA Gou
3d32350be0 mcexec: add use of MCKERNEL_RLIMIT_STACK
MCKERNEL_RLIMIT_STACK is a environment variable which
specify RLIMIT_STACK value on McKernel.

syntax: MCKERNEL_RLIMIT_STACK=<cur>,<max>

example: MCKERNEL_RLIMIT_STACK=0x800000,-1
cur=8MiB, max=unlimited
2013-10-11 22:36:16 +09:00
NAKAMURA Gou
4fb6620f3a sys_getrlimit: modified to return mcexec's RLIMIT_STACK 2013-10-11 22:36:16 +09:00
NAKAMURA Gou
bc173baf13 mcexec: add a path prefix for interpreter search
- When the interpreter is not found,
  add a prefix to the path and retry search.
- the prefix is specified by a environment variable MCEXEC_ALT_ROOT.
- If the MCEXEC_ALT_ROOT does not exist,
  /usr/linux-k1om-4.7/linux-k1om is used as a prefix.
2013-10-11 22:23:22 +09:00