diff --git a/kernel/mem.c b/kernel/mem.c index 64b05161..702f0999 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -2478,7 +2478,7 @@ int is_mckernel_memory(unsigned long start, unsigned long end) ihk_mc_get_memory_chunk(i, &chunk_start, &chunk_end, &numa_id); if ((chunk_start <= start && start < chunk_end) && - (chunk_start <= end && end < chunk_end)) { + (chunk_start <= end && end <= chunk_end)) { return 1; } } @@ -2497,7 +2497,7 @@ int is_mckernel_memory(unsigned long start, unsigned long end) list_for_each_entry(pa_allocator, &memory_nodes[i].allocators, list) { if ((area_start <= start && start < area_end) && - (area_start <= end && end < area_end)) { + (area_start <= end && end <= area_end)) { return 1; } } diff --git a/test/issues/1324+1329/C1324+1329.sh b/test/issues/1324+1329/C1324+1329.sh new file mode 100755 index 00000000..9f398570 --- /dev/null +++ b/test/issues/1324+1329/C1324+1329.sh @@ -0,0 +1,43 @@ +#/bin/sh + +USELTP=1 +USEOSTEST=0 + +BOOTPARAM="-m 1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0,1G@0 -O" + +. ../../common.sh + +issue="1324+1329" +tid=01 + +for tno in 01 02 03 +do + tname=`printf "C${issue}T%02d" ${tid}` + echo "*** ${tname} start *******************************" + ${MCEXEC} ./C1324+1329T${tno} + + if [ $? -eq 0 ]; then + echo "*** ${tname} PASSED ******************************" + else + echo "*** ${tname} FAILED ******************************" + fi + let tid++ + echo "" +done + +for tp in fork14 fork01 fork02 fork03 fork04 fork05 fork06 fork07 fork08 fork09 fork10 fork11 msgctl01 msgctl02 msgctl03 msgctl04 msgctl12 +do + tname=`printf "C${issue}T%02d" ${tid}` + echo "*** ${tname} start *******************************" + sudo $MCEXEC $LTPBIN/$tp 2>&1 | tee $tp.txt + ok=`grep PASS $tp.txt | wc -l` + ng=`grep FAIL $tp.txt | wc -l` + if [ $ng = 0 ]; then + echo "*** ${tname} PASSED ($ok)" + else + echo "*** ${tname} FAILED (ok=$ok ng=%ng)" + fi + let tid++ + echo "" +done + diff --git a/test/issues/1324+1329/C1324+1329T01.c b/test/issues/1324+1329/C1324+1329T01.c new file mode 100644 index 00000000..719819e9 --- /dev/null +++ b/test/issues/1324+1329/C1324+1329T01.c @@ -0,0 +1,100 @@ +#include +#include +#include +#include +#include +#include +#include +#include + + +#define GB (1024 * 1024 * 1024) +#define MAP_SIZE (1 * GB) + +int main(int argc, char **argv) +{ + int rc, ret = 0; + int pid, status; + void *addr; + unsigned long test_val = 0x1129; + ssize_t val_size = sizeof(test_val); + ssize_t offset = MAP_SIZE - val_size; + + addr = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + if (addr == MAP_FAILED) { + ret = -1; + perror("failed to mmap: "); + goto out; + } + memset(addr, '0', MAP_SIZE); + + pid = fork(); + if (pid < 0) { + ret = -1; + perror("failed to fork: "); + goto out; + } + + if (pid == 0) { + /* child */ + printf("[OK] fork is successful\n"); + + rc = ptrace(PTRACE_TRACEME, 0, NULL, NULL); + if (rc < 0) { + printf("[NG]: traceme is failed\n"); + } + raise(SIGSTOP); + + if (*((unsigned long *)(addr + offset)) == test_val) { + printf("[OK] POKED value is correct!!\n"); + } + else { + printf("[NG] POKED value is NOT correct!!\n"); + exit(-1); + } + + exit(0); + } + else { + waitpid(pid, &status, 0); + if (!WIFSTOPPED(status)) { + ret = -1; + goto out; + } + + rc = ptrace(PTRACE_POKETEXT, pid, addr + offset, test_val); + if (rc < 0) { + ret = -1; + goto out; + } + + rc = ptrace(PTRACE_DETACH, pid, NULL, NULL); + if (rc < 0) { + ret = -1; + goto out; + } + + waitpid(pid, &status, 0); + if (WIFEXITED(status)) { + if (WEXITSTATUS(status) == 0) { + printf("[OK] child exited normaly\n"); + } + else { + ret = -1; + goto out; + } + } + else { + ret = -1; + goto out; + } + } + +out: + if (ret) { + printf("[NG] Test Program failed\n"); + } + return ret; +} diff --git a/test/issues/1324+1329/C1324+1329T02.c b/test/issues/1324+1329/C1324+1329T02.c new file mode 100644 index 00000000..896c8a82 --- /dev/null +++ b/test/issues/1324+1329/C1324+1329T02.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include +#include +#include +#include + +#define GB (1024 * 1024 * 1024) +#define MAP_SIZE (1 * GB) + +int main(int argc, char **argv) +{ + int rc, ret; + void *addr1, *addr2; + stack_t *ss, *oss; + ssize_t stack_t_size = sizeof(stack_t); + + addr1 = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + if (addr1 == MAP_FAILED) { + ret = -1; + perror("failed to mmap 1st: "); + goto out; + } + + addr2 = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + if (addr2 == MAP_FAILED) { + ret = -1; + perror("failed to mmap 2nd: "); + goto out; + } + + oss = addr1 + MAP_SIZE - stack_t_size; + memset(oss, '0', stack_t_size); + ss = addr2 + MAP_SIZE - stack_t_size; + memset(ss, '0', stack_t_size); + + rc = sigaltstack(NULL, oss); + if (rc == 0) { + printf("[OK] sigaltstack 1st is successful\n"); + } + else { + ret = -1; + perror("[NG] failed to sigaltstack 1st: "); + goto out; + } + + ss->ss_sp = oss->ss_sp; + ss->ss_flags = oss->ss_flags; + ss->ss_size = oss->ss_size; + rc = sigaltstack(ss, NULL); + if (rc == 0) { + printf("[OK] sigaltstack 2nd is successful\n"); + } + else { + ret = -1; + perror("[NG] failed to sigaltstack 2nd: "); + goto out; + } + +out: + return ret; +} diff --git a/test/issues/1324+1329/C1324+1329T03.c b/test/issues/1324+1329/C1324+1329T03.c new file mode 100644 index 00000000..72348ca8 --- /dev/null +++ b/test/issues/1324+1329/C1324+1329T03.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define GB (1024 * 1024 * 1024) +#define MAP_SIZE (1 * GB) + +int main(int argc, char **argv) +{ + int fd = -1, ret = 0; + void *addr; + unsigned long test_val = 0x1129; + ssize_t val_size = sizeof(test_val); + unsigned long buf; + ssize_t offset = MAP_SIZE - val_size; + + addr = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + if (addr == MAP_FAILED) { + ret = -1; + perror("failed to mmap: "); + goto out; + } + memcpy(addr + offset, &test_val, val_size); + + fd = open("/proc/self/mem", O_RDWR); + lseek(fd, (off_t)addr + offset, SEEK_SET); + + read(fd, &buf, val_size); + + if (buf == test_val) { + printf("[OK] value read by proc_mem is correct\n"); + } + else { + ret = -1; + goto out; + } + +out: + if (fd >= 0) { + close(fd); + } + if (ret) { + printf("[NG] Test Program failed\n"); + } + return ret; +} diff --git a/test/issues/1324+1329/Makefile b/test/issues/1324+1329/Makefile new file mode 100644 index 00000000..3a03e2b9 --- /dev/null +++ b/test/issues/1324+1329/Makefile @@ -0,0 +1,11 @@ +CFLAGS=-g +LDFLAGS= + +TARGET=C1324+1329T01 C1324+1329T02 C1324+1329T03 + +all: $(TARGET) + +test: all + ./C1324+1329.sh +clean: + rm -f $(TARGET) *.o *.txt diff --git a/test/issues/1324+1329/README b/test/issues/1324+1329/README new file mode 100644 index 00000000..0b916308 --- /dev/null +++ b/test/issues/1324+1329/README @@ -0,0 +1,66 @@ +【Issue#1324,#1329 動作確認】 +□ テスト内容 +本Issueの症状は、以下の操作の際に操作対象メモリの物理メモリが +McKernelに割り当てられたメモリチャンクの終端になっている場合に発生する + - fork時などのcopy_user_pte() + - POKE{TEXT,DATA}指定のptrace + - copy_{from,to}_user() + - /proc//mem への読み書き + +1GBのmmapで確保したメモリ領域がメモリチャンクと重なるように、 +mcreboot.sh -m 1G@0,1G@0,1G@0... としてMcKernelを起動した状態で +本テストを実行する + +1. 下記のテストプログラムを実行し、症状が発生しないことを確認する +C1324+1329T01: + 1. PRIVATE|ANONYMOUSな1GBのメモリ領域をmmapで確保 + 2. fork()が正常に行われることを確認 + 3. 子プロセスはptrace(TRACEME)を行い、停止 + 4. 親プロセスは、ptrace(POKETEXT)で、確保したメモリ領域の終端に + テスト用の値を書き込む + 5. ptrace(DETACH)で子プロセスを再開 + 6. 子プロセスは、書き込まれたテスト用の値を確認 + +C1324+1329T02: + (copy_{from,to}_user()を伴うシンプルなシステムコールとして、sigaltstackを利用) + 1. PRIVATE|ANONYMOUSな1GBのメモリ領域を2つ、mmapで確保 + 2. sigaltstack()で授受する構造体を、それぞれ確保したメモリ領域の終端に配置 + 3. sigaltstack()での情報の授受が成功することを確認 + +C1324+1329T03: + 1. PRIVATE|ANONYMOUSな1GBのメモリ領域をmmapで確保 + 2. 確保したメモリ領域の終端にテスト用の値を書き込む + 3. /proc/self/mem を介して、2.で書き込んだテスト用の値を確認 + +2. 以下のLTPを用いてIssueで報告された症状が発生しないことを確認 + - fork14 + +3. 以下のLTPを用いて既存のfork,msgctl機能に影響が無いことを確認 + - fork01 + - fork02 + - fork03 + - fork04 + - fork05 + - fork06 + - fork07 + - fork08 + - fork09 + - fork10 + - fork11 + - msgctl01 + - msgctl02 + - msgctl03 + - msgctl04 + - msgctl12 + +□ 実行手順 +$ make test + +McKernelのインストール先や、OSTEST, LTPの配置場所は、 +$HOME/.mck_test_config を参照している +.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを +$HOMEにコピーし、適宜編集する + +□ 実行結果 +x86_64_result.log aarch64_result.log 参照。 +すべての項目をPASSしていることを確認。 diff --git a/test/issues/1324+1329/aarch64_result.log b/test/issues/1324+1329/aarch64_result.log new file mode 100644 index 00000000..721d222a --- /dev/null +++ b/test/issues/1324+1329/aarch64_result.log @@ -0,0 +1,172 @@ +i*** C1324+1329T01 start ******************************* +[OK] fork is successful +[OK] POKED value is correct!! +[OK] child exited normaly +*** C1324+1329T01 PASSED ****************************** + +*** C1324+1329T02 start ******************************* +[OK] sigaltstack 1st is successful +[OK] sigaltstack 2nd is successful +*** C1324+1329T02 PASSED ****************************** + +*** C1324+1329T03 start ******************************* +[OK] value read by proc_mem is correct +*** C1324+1329T03 PASSED ****************************** + +*** C1324+1329T04 start ******************************* +fork14 1 TPASS : fork failed as expected. +*** C1324+1329T04 PASSED (1) + +*** C1324+1329T05 start ******************************* +fork01 1 TPASS : fork() returned 35497 +fork01 2 TPASS : child pid and fork() return agree: 35497 +*** C1324+1329T05 PASSED (2) + +*** C1324+1329T06 start ******************************* +fork02 0 TINFO : Inside parent +fork02 0 TINFO : exit status of wait 0 +fork02 1 TPASS : test 1 PASSED +*** C1324+1329T06 PASSED (1) + +*** C1324+1329T07 start ******************************* +fork03 0 TINFO : process id in parent of child from fork : 35581 +fork03 1 TPASS : test 1 PASSED +*** C1324+1329T07 PASSED (1) + +*** C1324+1329T08 start ******************************* +fork04 1 TPASS : Env var TERM unchanged after fork(): xterm +fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set +fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04 +*** C1324+1329T08 PASSED (3) + +*** C1324+1329T09 start ******************************* +fork05 0 TINFO : %fs test only for ix86 +*** C1324+1329T09 PASSED (0) + +*** C1324+1329T10 start ******************************* +fork06 0 TINFO : tries 1000 +fork06 0 TINFO : successes 1000 +fork06 0 TINFO : failures 0 +fork06 0 TINFO : There were no children to wait for +*** C1324+1329T10 PASSED (0) + +*** C1324+1329T11 start ******************************* +fork07 0 TINFO : Forking 100 children +fork07 0 TINFO : Forked all 100 children, now collecting +fork07 0 TINFO : Collected all 100 children +fork07 1 TPASS : 100/100 children read correctly from an inheritted fd +*** C1324+1329T11 PASSED (1) + +*** C1324+1329T12 start ******************************* +fork08 0 TINFO : parent forksval: 1 +fork08 0 TINFO : second child got char: b +fork08 1 TPASS : Test passed in childnumber 2 +fork08 0 TINFO : parent forksval: 1 +fork08 0 TINFO : parent forksval: 2 +fork08 0 TINFO : exit status of wait expected 0 got 0 +fork08 1 TPASS : parent test PASSED +fork08 0 TINFO : exit status of wait expected 0 got 0 +fork08 2 TPASS : parent test PASSED +fork08 0 TINFO : exit status of wait expected 0 got 0 +fork08 3 TPASS : parent test PASSED +fork08 0 TINFO : Number of processes forked is 2 +*** C1324+1329T12 PASSED (4) + +*** C1324+1329T13 start ******************************* +fork09 0 TINFO : OPEN_MAX is 1024 +fork09 0 TINFO : first file descriptor is 8 +fork09 0 TINFO : Parent reporting 1023 files open +fork09 0 TINFO : Child opened new file #1023 +fork09 0 TINFO : OPEN_MAX is 1024 +fork09 0 TINFO : first file descriptor is 8 +fork09 0 TINFO : Parent reporting 1023 files open +fork09 1 TPASS : test 1 PASSED +*** C1324+1329T13 PASSED (1) + +*** C1324+1329T14 start ******************************* +fork10 0 TINFO : fork child A +fork10 1 TPASS : test 1 PASSED +*** C1324+1329T14 PASSED (1) + +*** C1324+1329T15 start ******************************* +fork11 1 TPASS : fork test passed, 100 processes +*** C1324+1329T15 PASSED (1) + +*** C1324+1329T16 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl01.c:50: PASS: msgctl(IPC_STAT) +msgctl01.c:53: PASS: msg_stime = 0 +msgctl01.c:58: PASS: msg_rtime = 0 +msgctl01.c:64: PASS: msg_ctime = 1574829452, expected 1574829452 +msgctl01.c:71: PASS: msg_qnum = 0 +msgctl01.c:76: PASS: msg_qbytes = 16384 +msgctl01.c:81: PASS: msg_lspid = 0 +msgctl01.c:86: PASS: msg_lrpid = 0 +msgctl01.c:91: PASS: msg_perm.__key == 1627857601 +msgctl01.c:98: PASS: msg_perm.uid = 0 +msgctl01.c:105: PASS: msg_perm.gid = 0 +msgctl01.c:112: PASS: msg_perm.cuid = 0 +msgctl01.c:119: PASS: msg_perm.cgid = 0 +msgctl01.c:126: PASS: msg_perm.mode = 0660 + +Summary: +passed 14 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T16 PASSED (14) + +*** C1324+1329T17 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl02.c:47: PASS: msgctl(IPC_SET) msg_qbytes - 1 +msgctl02.c:54: PASS: msg_qbytes = 16383 + +Summary: +passed 2 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T17 PASSED (2) + +*** C1324+1329T18 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl03.c:40: PASS: msgctl(IPC_RMID) +msgctl03.c:44: PASS: msgctl(IPC_STAT): EINVAL + +Summary: +passed 2 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T18 PASSED (2) + +*** C1324+1329T19 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl04.c:72: PASS: msgctl(131073, 2, 0x432e60): EACCES +msgctl04.c:72: PASS: msgctl(163842, 2, 0xffffffffffffffff): EFAULT +msgctl04.c:72: PASS: msgctl(163842, 1, 0xffffffffffffffff): EFAULT +msgctl04.c:72: PASS: msgctl(163842, -1, 0x432e60): EINVAL +msgctl04.c:72: PASS: msgctl(-1, 2, 0x432e60): EINVAL +msgctl04.c:72: PASS: msgctl(-1, 1, 0x432e60): EINVAL +msgctl04.c:72: PASS: msgctl(98304, 0, (nil)): EPERM + +Summary: +passed 7 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T19 PASSED (7) + +*** C1324+1329T20 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl12.c:54: PASS: msgctl() test IPC_INFO succeeded +msgctl12.c:54: PASS: msgctl() test MSG_INFO succeeded +msgctl12.c:54: PASS: msgctl() test MSG_STAT succeeded + +Summary: +passed 3 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T20 PASSED (3) + diff --git a/test/issues/1324+1329/x86_64_result.log b/test/issues/1324+1329/x86_64_result.log new file mode 100644 index 00000000..688489f5 --- /dev/null +++ b/test/issues/1324+1329/x86_64_result.log @@ -0,0 +1,172 @@ +*** C1324+1329T01 start ******************************* +[OK] fork is successful +[OK] POKED value is correct!! +[OK] child exited normaly +*** C1324+1329T01 PASSED ****************************** + +*** C1324+1329T02 start ******************************* +[OK] sigaltstack 1st is successful +[OK] sigaltstack 2nd is successful +*** C1324+1329T02 PASSED ****************************** + +*** C1324+1329T03 start ******************************* +[OK] value read by proc_mem is correct +*** C1324+1329T03 PASSED ****************************** + +*** C1324+1329T04 start ******************************* +fork14 1 TPASS : fork failed as expected. +*** C1324+1329T04 PASSED (1) + +*** C1324+1329T05 start ******************************* +fork01 1 TPASS : fork() returned 12305 +fork01 2 TPASS : child pid and fork() return agree: 12305 +*** C1324+1329T05 PASSED (2) + +*** C1324+1329T06 start ******************************* +fork02 0 TINFO : Inside parent +fork02 0 TINFO : exit status of wait 0 +fork02 1 TPASS : test 1 PASSED +*** C1324+1329T06 PASSED (1) + +*** C1324+1329T07 start ******************************* +fork03 0 TINFO : process id in parent of child from fork : 12365 +fork03 1 TPASS : test 1 PASSED +*** C1324+1329T07 PASSED (1) + +*** C1324+1329T08 start ******************************* +fork04 1 TPASS : Env var TERM unchanged after fork(): xterm-256color +fork04 2 TPASS : Env var NoTSetzWq unchanged after fork(): getenv() does not find variable set +fork04 3 TPASS : Env var TESTPROG unchanged after fork(): FRKTCS04 +*** C1324+1329T08 PASSED (3) + +*** C1324+1329T09 start ******************************* +fork05 0 TINFO : %fs test only for ix86 +*** C1324+1329T09 PASSED (0) + +*** C1324+1329T10 start ******************************* +fork06 0 TINFO : tries 1000 +fork06 0 TINFO : successes 1000 +fork06 0 TINFO : failures 0 +fork06 0 TINFO : There were no children to wait for +*** C1324+1329T10 PASSED (0) + +*** C1324+1329T11 start ******************************* +fork07 0 TINFO : Forking 100 children +fork07 0 TINFO : Forked all 100 children, now collecting +fork07 0 TINFO : Collected all 100 children +fork07 1 TPASS : 100/100 children read correctly from an inheritted fd +*** C1324+1329T11 PASSED (1) + +*** C1324+1329T12 start ******************************* +fork08 0 TINFO : parent forksval: 1 +fork08 0 TINFO : second child got char: b +fork08 1 TPASS : Test passed in childnumber 2 +fork08 0 TINFO : parent forksval: 1 +fork08 0 TINFO : parent forksval: 2 +fork08 0 TINFO : exit status of wait expected 0 got 0 +fork08 1 TPASS : parent test PASSED +fork08 0 TINFO : exit status of wait expected 0 got 0 +fork08 2 TPASS : parent test PASSED +fork08 0 TINFO : exit status of wait expected 0 got 0 +fork08 3 TPASS : parent test PASSED +fork08 0 TINFO : Number of processes forked is 2 +*** C1324+1329T12 PASSED (4) + +*** C1324+1329T13 start ******************************* +fork09 0 TINFO : OPEN_MAX is 1024 +fork09 0 TINFO : first file descriptor is 8 +fork09 0 TINFO : Parent reporting 1023 files open +fork09 0 TINFO : Child opened new file #1023 +fork09 0 TINFO : OPEN_MAX is 1024 +fork09 0 TINFO : first file descriptor is 8 +fork09 0 TINFO : Parent reporting 1023 files open +fork09 1 TPASS : test 1 PASSED +*** C1324+1329T13 PASSED (1) + +*** C1324+1329T14 start ******************************* +fork10 0 TINFO : fork child A +fork10 1 TPASS : test 1 PASSED +*** C1324+1329T14 PASSED (1) + +*** C1324+1329T15 start ******************************* +fork11 1 TPASS : fork test passed, 100 processes +*** C1324+1329T15 PASSED (1) + +*** C1324+1329T16 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl01.c:50: PASS: msgctl(IPC_STAT) +msgctl01.c:53: PASS: msg_stime = 0 +msgctl01.c:58: PASS: msg_rtime = 0 +msgctl01.c:64: PASS: msg_ctime = 1574819699, expected 1574819699 +msgctl01.c:71: PASS: msg_qnum = 0 +msgctl01.c:76: PASS: msg_qbytes = 16384 +msgctl01.c:81: PASS: msg_lspid = 0 +msgctl01.c:86: PASS: msg_lrpid = 0 +msgctl01.c:91: PASS: msg_perm.__key == 1627586573 +msgctl01.c:98: PASS: msg_perm.uid = 0 +msgctl01.c:105: PASS: msg_perm.gid = 0 +msgctl01.c:112: PASS: msg_perm.cuid = 0 +msgctl01.c:119: PASS: msg_perm.cgid = 0 +msgctl01.c:126: PASS: msg_perm.mode = 0660 + +Summary: +passed 14 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T16 PASSED (14) + +*** C1324+1329T17 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl02.c:47: PASS: msgctl(IPC_SET) msg_qbytes - 1 +msgctl02.c:54: PASS: msg_qbytes = 16383 + +Summary: +passed 2 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T17 PASSED (2) + +*** C1324+1329T18 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl03.c:40: PASS: msgctl(IPC_RMID) +msgctl03.c:44: PASS: msgctl(IPC_STAT): EINVAL + +Summary: +passed 2 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T18 PASSED (2) + +*** C1324+1329T19 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl04.c:72: PASS: msgctl(86835201, 2, 0x61cfa0): EACCES +msgctl04.c:72: PASS: msgctl(86867971, 2, 0xffffffffffffffff): EFAULT +msgctl04.c:72: PASS: msgctl(86867971, 1, 0xffffffffffffffff): EFAULT +msgctl04.c:72: PASS: msgctl(86867971, -1, 0x61cfa0): EINVAL +msgctl04.c:72: PASS: msgctl(-1, 2, 0x61cfa0): EINVAL +msgctl04.c:72: PASS: msgctl(-1, 1, 0x61cfa0): EINVAL +msgctl04.c:72: PASS: msgctl(86802432, 0, (nil)): EPERM + +Summary: +passed 7 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T19 PASSED (7) + +*** C1324+1329T20 start ******************************* +tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s +msgctl12.c:54: PASS: msgctl() test IPC_INFO succeeded +msgctl12.c:54: PASS: msgctl() test MSG_INFO succeeded +msgctl12.c:54: PASS: msgctl() test MSG_STAT succeeded + +Summary: +passed 3 +failed 0 +skipped 0 +warnings 0 +*** C1324+1329T20 PASSED (3) +