Commit Graph

103 Commits

Author SHA1 Message Date
ac40b96c24 execve(): support for ETXTBSY via a new ioctl() call to test in kernel space with open_exec() 2014-09-10 14:09:11 +09:00
efc817de92 Merge branch 'master' of postpeta.pccluster.org:mckernel 2014-09-05 17:20:50 +09:00
15c9ae4c8d execve(): lookup_exec_path() support for symlinks based on COKERNEL_EXEC_ROOT 2014-09-04 18:11:41 +09:00
c939a372b0 Added mcexec hack. 2014-09-04 16:44:30 +09:00
cd366de097 execve():
- COKERNEL_PATH and COKERNEL_EXEC_ROOT support for co-kernels with different architecture than the host (i.e., Xeon Phi).
- fix various error codes: ENAMETOOLONG, ENOENT, ENOTDIR, EACCES, ENOEXEC, EFAULT.
- support for shell code execution.
2014-09-03 18:15:43 +09:00
d0b6aa1047 Merge branch 'bug201.get_user_pages' 2014-09-03 11:24:22 +09:00
f2e0e42ba4 mcexec: report proper error when __NR_munmap fails 2014-09-02 15:43:08 +09:00
34854d3c93 ltp times03 2014-09-01 14:27:31 +09:00
f535670100 fix pipe02 2014-08-27 16:50:01 +09:00
78d10cce80 support process group 2014-08-18 17:08:28 +09:00
663c121308 interrupt syscall sufficient threads 2014-08-18 16:49:49 +09:00
23ab6032ba don't close /dev/mcos 2014-08-18 16:25:24 +09:00
8c1c8a40d1 use madvise() when zap_vma_ptes() fails 2014-08-07 17:53:26 +09:00
9fda245490 execve(): return correct error value when failure (errno) 2014-08-07 14:35:15 +09:00
3fa6818962 Merge from master. 2014-07-31 18:30:39 +09:00
27bfe37b80 execve(): fix looking up relative path and checking executable permission 2014-07-29 15:48:14 +09:00
f1e39f5fb2 execve(): find executable first in COKERNEL_PATH and then in PATH if executable name is not absolute 2014-07-29 11:14:09 +09:00
e5d3407d8e child mcexec don't print signal terminate message 2014-07-29 11:10:11 +09:00
c83e80ad91 execve(): clear host user-space PTEs before context switching 2014-07-28 18:57:56 +09:00
2f4f3628f9 support tgkill 2014-06-10 10:42:29 +09:00
2331309d2f mcexec: use optind instead of shifting argv[] for arguments passing to remote app 2014-05-27 17:52:56 +09:00
514d75b685 execve(): supporting syscall and mcexec modifications 2014-05-22 17:39:13 +09:00
badb450153 more detailed report in memory management error path 2014-05-22 17:27:39 +09:00
6a8e75dda0 fix argc bug 2014-05-22 17:11:10 +09:00
6ca8b77cf2 fix argv/argc bug 2014-05-22 16:39:07 +09:00
84c18ef38e MCEXEC_UP_TRANSFER: generalize MCEXEC_UP_LOAD_IMAGE ioctl() to allow transfer in both directions 2014-05-22 12:42:23 +09:00
f810aa56b8 refactoring mcexec's main() in preparation for execve() 2014-05-21 21:55:49 +09:00
a5b8d388e9 dprintf exit status 2014-05-12 10:30:39 +09:00
cc8317643e SIGPIPE fix (ltp writev) 2014-04-25 08:43:08 +09:00
0e348e6295 SIGCHLD and wait4(), i.e. wait()/waitpid() implementation 2014-04-23 13:33:18 +09:00
39a86fad18 support execute disabled stack 2014-04-11 14:59:47 +09:00
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
cf442e6a14 fork(): preliminary version (no wait()/waitpid() support yet) 2014-04-02 14:07:38 +09:00
391b69e8c4 refactor mcexec's main and separate signal and syscall thread initialization 2014-04-02 14:04:55 +09:00
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
51f75d9ba8 mcexec: options for target CPU core ID where application is executed 2014-03-27 14:58:26 +09:00
74339586d5 change dma_buf size 256MB -> 4kB 2014-02-07 10:57:50 +09:00
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
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
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
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
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
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
a8c249ddaf signal (part 1) 2014-01-07 11:57:57 +09:00
9926d469d8 remove debug print 2013-12-18 15:33:37 +09:00
96576aaee7 fix general protection fault caused by SIGALARM 2013-12-16 13:45:45 +09:00
8e4cbfeea1 print exit code or signal, if stderr is a tty 2013-12-10 14:45:37 +09:00
daec3b2f32 propagate exit code and signal 2013-12-10 14:40:22 +09:00
e5890aa949 typo fix 2013-11-14 16:27:11 +09:00
3f60324d4e add copyright 2013-11-14 15:55:00 +09:00