madvise: Support MADV_DONTDUMP and MADV_DODUMP on anonymous map
Change-Id: I231b62ed6803b797ec749ac70a66cdf8236204bd refs: #1373
This commit is contained in:
@@ -5383,6 +5383,8 @@ SYSCALL_DECLARE(madvise)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(advice == MADV_DONTFORK || advice == MADV_DOFORK);
|
else if(advice == MADV_DONTFORK || advice == MADV_DOFORK);
|
||||||
|
else if (advice == MADV_DONTDUMP || advice == MADV_DODUMP) {
|
||||||
|
}
|
||||||
else if (advice == MADV_NORMAL) {
|
else if (advice == MADV_NORMAL) {
|
||||||
/*
|
/*
|
||||||
* Normally, the settings of MADV_RANDOM and
|
* Normally, the settings of MADV_RANDOM and
|
||||||
|
|||||||
23
test/issues/1373/README
Normal file
23
test/issues/1373/README
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/* REDME COPYRIGHT FUJITSU LIMITED 2020 */
|
||||||
|
|
||||||
|
ltp: madvise08: MADV_{DONT,DO}DUMPが期待通りに動作しない。
|
||||||
|
https://postpeta.pccluster.org/redmine/issues/1373
|
||||||
|
|
||||||
|
テストセットREADME
|
||||||
|
|
||||||
|
(0) 事前準備
|
||||||
|
1. LTP に madvise08-mck-core-pattern.patch を適用
|
||||||
|
2. LTP のビルド及びインストール
|
||||||
|
3. $HOME/.mck_test_configを用意する
|
||||||
|
|
||||||
|
(1) テスト実行方法
|
||||||
|
1. ./run.sh
|
||||||
|
|
||||||
|
(2) テスト項目詳細
|
||||||
|
|
||||||
|
LTPの下記項目を実行し期待通りに動作することを確認する
|
||||||
|
"test OK." が書き出されれば合格判定となる。具体例はresult.logを参照。
|
||||||
|
- madvise08
|
||||||
|
- madvise10
|
||||||
|
|
||||||
|
以上。
|
||||||
27
test/issues/1373/madvise08-mck-core-pattern.patch
Normal file
27
test/issues/1373/madvise08-mck-core-pattern.patch
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
madvise08-mck-core-pattern.patch COPYRIGHT FUJITSU LIMITED 2020
|
||||||
|
diff --git a/testcases/kernel/syscalls/madvise/madvise08.c b/testcases/kernel/syscalls/madvise/madvise08.c
|
||||||
|
index a6fd967..4cdba31 100644
|
||||||
|
--- a/testcases/kernel/syscalls/madvise/madvise08.c
|
||||||
|
+++ b/testcases/kernel/syscalls/madvise/madvise08.c
|
||||||
|
@@ -87,9 +87,9 @@ static void setup(void)
|
||||||
|
tst_res(TINFO, "System core pattern is '%s'", cpattern);
|
||||||
|
|
||||||
|
SAFE_GETCWD(cwd, sizeof(cwd));
|
||||||
|
- snprintf(tmpcpattern, sizeof(tmpcpattern), "%s/dump-%%p", cwd);
|
||||||
|
- tst_res(TINFO, "Temporary core pattern is '%s'", tmpcpattern);
|
||||||
|
- SAFE_FILE_PRINTF(CORE_PATTERN, "%s", tmpcpattern);
|
||||||
|
+ snprintf(tmpcpattern, sizeof(tmpcpattern), "%s/mccore-madvise08.%%p", cwd);
|
||||||
|
+ tst_res(TINFO, "McKernel core pattern is '%s'", tmpcpattern);
|
||||||
|
+ //SAFE_FILE_PRINTF(CORE_PATTERN, "%s", tmpcpattern);
|
||||||
|
|
||||||
|
fmem = SAFE_MMAP(NULL,
|
||||||
|
FMEMSIZE,
|
||||||
|
@@ -129,7 +129,7 @@ static int find_sequence(int pid)
|
||||||
|
int ycount = 0;
|
||||||
|
char dumpname[256];
|
||||||
|
|
||||||
|
- snprintf(dumpname, 256, "dump-%d", pid);
|
||||||
|
+ snprintf(dumpname, 256, "mccore-madvise08.%d", pid);
|
||||||
|
tst_res(TINFO, "Dump file should be %s", dumpname);
|
||||||
|
if (access(dumpname, F_OK))
|
||||||
|
tst_brk(TBROK | TERRNO, "Dump file was not found.");
|
||||||
42
test/issues/1373/result.log
Normal file
42
test/issues/1373/result.log
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[root@hostname 1373]# ./run.sh
|
||||||
|
mcstop+release.sh ... done
|
||||||
|
mcreboot.sh -c 12-59 -m 512M@4 ... done
|
||||||
|
test run.
|
||||||
|
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
||||||
|
madvise08.c:87: INFO: System core pattern is '|/usr/lib/systemd/systemd-coredump'
|
||||||
|
madvise08.c:91: INFO: McKernel core pattern is '/tmp/l2JnVb/mccore-madvise08.%p'
|
||||||
|
madvise08.c:133: INFO: Dump file should be mccore-madvise08.17555
|
||||||
|
madvise08.c:217: PASS: madvise(..., MADV_DONTDUMP)
|
||||||
|
madvise08.c:133: INFO: Dump file should be mccore-madvise08.17606
|
||||||
|
madvise08.c:221: PASS: madvise(..., MADV_DODUMP)
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
passed 2
|
||||||
|
failed 0
|
||||||
|
skipped 0
|
||||||
|
warnings 0
|
||||||
|
tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
|
||||||
|
madvise10.c:143: INFO: MADV_WIPEONFORK zeroes memory in child
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001c0000, 16384, 0x0)
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001c0000, 16384, 0x12)
|
||||||
|
madvise10.c:98: PASS: In PID 17758, Matched expected pattern
|
||||||
|
madvise10.c:143: INFO: MADV_WIPEONFORK with zero length does nothing
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001d0000, 0, 0x0)
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001d0000, 0, 0x12)
|
||||||
|
madvise10.c:98: PASS: In PID 17808, Matched expected pattern
|
||||||
|
madvise10.c:143: INFO: MADV_WIPEONFORK zeroes memory in grand-child
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001e0000, 16384, 0x0)
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001e0000, 16384, 0x12)
|
||||||
|
madvise10.c:98: PASS: In PID 17908, Matched expected pattern
|
||||||
|
madvise10.c:143: INFO: MADV_KEEPONFORK will undo MADV_WIPEONFORK
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001f0000, 16384, 0x12)
|
||||||
|
madvise10.c:117: PASS: madvise(0x1000001f0000, 16384, 0x13)
|
||||||
|
madvise10.c:98: PASS: In PID 17958, Matched expected pattern
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
passed 12
|
||||||
|
failed 0
|
||||||
|
skipped 0
|
||||||
|
warnings 0
|
||||||
|
test OK.
|
||||||
|
mcstop+release.sh ... done
|
||||||
32
test/issues/1373/run.sh
Executable file
32
test/issues/1373/run.sh
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# run.sh COPYRIGHT FUJITSU LIMITED 2020
|
||||||
|
|
||||||
|
# load setting and booting mck.
|
||||||
|
USELTP=1
|
||||||
|
. ../../common.sh
|
||||||
|
chmod 777 /dev/mcos*
|
||||||
|
|
||||||
|
echo "test run."
|
||||||
|
ltp=`cat <<__EOL__
|
||||||
|
madvise08
|
||||||
|
madvise10
|
||||||
|
__EOL__`
|
||||||
|
|
||||||
|
FAIL=0
|
||||||
|
for tp in $ltp
|
||||||
|
do
|
||||||
|
pushd ${LTPBIN} > /dev/null
|
||||||
|
${MCEXEC} ${LTPBIN}/${tp}
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
FAIL=1
|
||||||
|
fi
|
||||||
|
popd > /dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ${FAIL} -eq 1 ]; then
|
||||||
|
echo "test NG."
|
||||||
|
else
|
||||||
|
echo "test OK."
|
||||||
|
fi
|
||||||
|
|
||||||
|
mcstop
|
||||||
Reference in New Issue
Block a user