add_process_memory_range: Change order of update page and insert range.

Unintended update page was occurred, when inserting range failed.

Change-Id: I3d117b8613c5fbb64463c759b5fcc81db22bd624
refs: #1512
This commit is contained in:
Ken Sato
2021-01-07 16:19:57 +09:00
committed by Masamichi Takagi
parent 93dafc5f79
commit 6dce9a2bf9
8 changed files with 219 additions and 9 deletions

60
test/issues/1512/C1512.sh Executable file
View File

@ -0,0 +1,60 @@
#/bin/sh
USELTP=1
USEOSTEST=0
. ../../common.sh
issue="1512"
tid=01
arch=`uname -p`
tname=`printf "C${issue}T%02d" ${tid}`
echo "*** ${tname} start *******************************"
tp="shmt09"
fail_flag=0
for rep in `seq 1 10`
do
sudo $MCEXEC $LTPBIN/$tp 2>&1 > $tp.txt
ok=`grep PASS $tp.txt | wc -l`
ng=`grep FAIL $tp.txt | wc -l`
echo "shmt09 rep $rep done. (ok=$ok ng=$ng)"
if [ $ng -ne 0 ]; then
if [ "${arch}" == "x86_64" ]; then
echo "OK: Expected fail on ${arch}"
else
echo "NG: Unexpected fail on ${arch}"
fail_flag=1
fi
else
echo "OK: shmt09 PASS"
fi
done
if [ ${fail_flag} -eq 0 ]; then
echo "*** ${tname} PASSED"
else
echo "*** ${tname} FAILED"
fi
echo ""
let tid++
while read tp
do
tname=`printf "C${issue}T%02d" ${tid}`
echo "*** ${tname} start *******************************"
args=""
if [ "$tp" == "mmapstress06" ]; then
args="1"
fi
sudo $MCEXEC $LTPBIN/$tp $args 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 < ./ltp_list

11
test/issues/1512/Makefile Normal file
View File

@ -0,0 +1,11 @@
CFLAGS=-g
LDFLAGS=
TARGET=
all: $(TARGET)
test: all
./C1512.sh
clean:
rm -f $(TARGET) *.o *.txt

21
test/issues/1512/README Normal file
View File

@ -0,0 +1,21 @@
【Issue#1512 動作確認】
□ テスト内容
1. shmt09 を10回連続で実行し、それぞれのプログラムが終了することを確認する
なお、x86_64 アーキテクチャではMcKernelのbrk位置をshrinkさせない仕様により、
テスト動作が変わり、shmt09はFAILとなる
2. sbrk()を利用する以下のLTPを用いて既存のbrk機能に影響が無いことを確認
- sbrk01,02
- mmapstress02,05,06
□ 実行手順
$ 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していることを確認。

View File

@ -0,0 +1,50 @@
./C1512.sh
mcstop+release.sh ... done
mcreboot.sh -c 37-43,49-55 -m 2G@2,2G@3 -r 37-43:36+49-55:48 -O ... done
*** C1512T01 start *******************************
shmt09 rep 1 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 2 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 3 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 4 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 5 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 6 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 7 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 8 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 9 done. (ok=4 ng=0)
OK: shmt09 PASS
shmt09 rep 10 done. (ok=4 ng=0)
OK: shmt09 PASS
*** C1512T01 PASSED
*** C1512T02 start *******************************
sbrk01 1 TPASS : sbrk - Increase by 8192 bytes returned 0x20030000
sbrk01 2 TPASS : sbrk - Increase by -8192 bytes returned 0x20032000
*** C1512T02 PASSED (2)
*** C1512T03 start *******************************
sbrk02 0 TINFO : setup() bailing inc: 17196646400, ret: 0xffffffffffffffff, sbrk: 0x7fe20030000: errno=ENOMEM(12): Cannot allocate memory
sbrk02 1 TPASS : sbrk(17196646400) failed as expected: TEST_ERRNO=ENOMEM(12): Cannot allocate memory
*** C1512T03 PASSED (1)
*** C1512T04 start *******************************
mmapstress02 1 TPASS : Test passed
*** C1512T04 PASSED (1)
*** C1512T05 start *******************************
mmapstress05 1 TPASS : Test passed
*** C1512T05 PASSED (1)
*** C1512T06 start *******************************
mmapstress06 1 TPASS : Test passed
*** C1512T06 PASSED (1)

View File

@ -0,0 +1,5 @@
sbrk01
sbrk02
mmapstress02
mmapstress05
mmapstress06

View File

@ -0,0 +1,50 @@
./C1512.sh
mcstop+release.sh ... done
mcreboot.sh -c 1-7,9-15,17-23,25-31 -m 10G@0,10G@1 -r 1-7:0+9-15:8+17-23:16+25-31:24 -O ... done
*** C1512T01 start *******************************
shmt09 rep 1 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 2 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 3 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 4 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 5 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 6 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 7 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 8 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 9 done. (ok=3 ng=1)
OK: Expected fail on x86_64
shmt09 rep 10 done. (ok=3 ng=1)
OK: Expected fail on x86_64
*** C1512T01 PASSED
*** C1512T02 start *******************************
sbrk01 1 TPASS : sbrk - Increase by 8192 bytes returned 0x821000
sbrk01 2 TPASS : sbrk - Increase by -8192 bytes returned 0x823000
*** C1512T02 PASSED (2)
*** C1512T03 start *******************************
sbrk02 0 TINFO : setup() bailing inc: 28068282368, ret: 0xffffffffffffffff, sbrk: 0x1550dc821000: errno=ENOMEM(12): Cannot allocate memory
sbrk02 1 TPASS : sbrk(28068282368) failed as expected: TEST_ERRNO=ENOMEM(12): Cannot allocate memory
*** C1512T03 PASSED (1)
*** C1512T04 start *******************************
mmapstress02 1 TPASS : Test passed
*** C1512T04 PASSED (1)
*** C1512T05 start *******************************
mmapstress05 1 TPASS : Test passed
*** C1512T05 PASSED (1)
*** C1512T06 start *******************************
mmapstress06 1 TPASS : Test passed
*** C1512T06 PASSED (1)