mmap: Check if size exceeds available memory when MAP_HUGETLB

If size exceeds, mmap fails and set -ENOMEM

Change-Id: I4f0d6e18ee3a7c8e32e251b7ed07ee9f76305603
Refs: #1183
This commit is contained in:
Ken Sato
2019-07-02 15:42:13 +09:00
committed by Masamichi Takagi
parent 2dd8687974
commit 8efced7bf7
11 changed files with 542 additions and 0 deletions

49
test/issues/1183/README Normal file
View File

@ -0,0 +1,49 @@
【Issue#1183 動作確認】
□ テスト内容
テストで扱うメモリサイズについて、以下のように定義する
メモリ総容量McKernelに割り当てられたメモリ量。本テストでは10GB とする
利用可能サイズ:メモリ総容量から、マップ済ページの合計サイズを引いたもの
利用可能サイズを超えるサイズ:本テストではメモリ総容量 + 1GB とする
利用可能サイズを超えないサイズ: 本テストではメモリ総容量 / 2 とする
1. MAP_HUGETLB指定時のmmapの動作確認
C1183T01:
一回のmmapでの要求サイズが、利用可能サイズを超える場合、
利用可能なそれぞれのHugePageSizeでmmapが失敗することを確認する
C1183T02:
一回のmmapでの要求サイズが、利用可能サイズを超えない場合、
利用可能なそれぞれのHugePageSize でmmapが成功することを確認する
C1183T03:
複数回のmmapにおいて、各回のmmapでの要求サイズが利用可能サイズを超えない場合に成功し、
超えた場合に失敗することを確認する
なお、anonymous mmapは連続した物理メモリが確保出来た場合はプリマップをするため、
アーキテクチャごとに下記のような動作となる
- x86_64 : 2MBページ要求時は利用可能サイズが減少していくが、1GBページ要求時は減少しない
- aarch64 : 64KB, 2MBページ要求時は利用可能サイズが減少していくが、32MB, 1GBページ要求時は減少しない
1. MAP_HUGETLB未指定時のmmapの動作確認
C1183T04:
一回のmmapでの要求サイズが、利用可能サイズを超える場合、mmapが成功することを確認する
C1183T05
一回のmmapでの要求サイズが、利用可能サイズを超えない場合、mmapが成功することを確認する
C1183T06:
複数回のmmapにおいて、各回のmmapでの要求サイズが利用可能サイズを超えない場合に成功し、
超えた場合に失敗することを確認する
なお、MAP_HUGETLB未指定時にはプリマップは行われないため、複数回のmmapによっても
利用可能サイズは減少せず、累積のmmap要求サイズがメモリ総容量を超過してもmmapは成功する
□ 実行手順
$ 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していることを確認。