Files
mckernel/test/issues/1165
Tomoki Shirasawa 7e342751a2 do_syscall: Delegate system calls to the mcexec with the same pid
This includes the following fix:
send_syscall, do_syscall: remove argument pid

Fujitsu: POSTK_TEMP_FIX_26
Refs: #1165
Change-Id: I702362c07a28f507a5e43dd751949aefa24bc8c0
2018-09-13 16:59:47 +09:00
..

【Issue#1165 動作確認】
□ テスト内容
Issue#1165 で指摘されている現象は、以下の理由により既に解消されている。
・ kill および gettid のシステムコールデリゲートは、McKernel と同一PIDを持つ
   mcexec に対して発行するようになっているため、他プロセスの情報を参照する
   ことは無い。
・ 対応する mcexec が終了している状態でシステムコールデリゲートしたとしても、
   mcctrl が適切にエラーを返すため、指摘の現象が発生することは無い。

以上を踏まえ、Issue#1165 では、以下の改修を行った。
・ 他 PID の mcexec にシステムコールデリゲートは発生しない (または解消可能)
   ので、do_syscall と send_syscall のインタフェースから PID 指定を削除する。
・ 他 PID の mcexec にシステムコールデリゲートする以下の処理は、同一 PID の
   mcexec にシステムコールデリゲートするように変更する。
   - fork 後、親プロセスから子プロセスの mcexec に PTE の初期化を依頼する処理

このため、Issue#1165に対して以下のテストを行った。
1. fork 後、子プロセスのシステムコールデリゲートで親プロセスの領域が破壊
   されないことを確認する。
C1165T01 親プロセスが read 後 fork し、子プロセスが同じアドレスの領域に read
         して子プロセスの領域が書き換えられ、親プロセスの領域が書き換えられ
         ないことを確認する。

2. 指摘されたプログラムを実行し、残留プロセスが存在しないことを確認する。
C1165T02 ostest force_exit

3. LTP を用いて、変更が既存処理に影響しないことを確認する (以下の LTP が PASS
   すること)。
C1165T03 clone01
C1165T04 clone03
C1165T05 clone04
C1165T06 clone06
C1165T07 clone07
C1165T08 fork01
C1165T09 fork02
C1165T10 fork03
C1165T11 fork04
C1165T12 fork07
C1165T13 fork08
C1165T14 fork09
C1165T15 fork10

□ 実行手順
$ make test

実行できない場合は、C1165.shの以下の行を適切に書き換えた後に実行。
BIN=          mcexec が存在するパス
SBIN=         mcreboot.sh が存在するパス
LTP=          LTP が存在するパス

□ 実行結果
C1165.txt 参照。
全ての項目が OK となっていることを確認。