selftests: memfd: return Kselftest Skip code for skipped tests

When memfd test is skipped because of unmet dependencies and/or unsupported
configuration, it returns non-zero value which is treated as a fail by the
Kselftest framework. This leads to false negative result even when the test
could not be run.

Change it to return kselftest skip code when a test gets skipped to clearly
report that the test could not be run.

Added an explicit check for root user at the start of memfd hugetlbfs test
and return skip code if a non-root user attempts to run it.

In addition, return skip code when not enough huge pages are available to
run the test.

Kselftest framework SKIP code is 4 and the framework prints appropriate
messages to indicate that the test is skipped.
Signed-off-by: default avatarShuah Khan (Samsung OSG) <shuah@kernel.org>
Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
Signed-off-by: default avatarShuah Khan (Samsung OSG) <shuah@kernel.org>
parent 39d69997
#!/bin/bash #!/bin/bash
# please run as root # please run as root
# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4
# #
# Normal tests requiring no special resources # Normal tests requiring no special resources
# #
...@@ -29,12 +32,13 @@ if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then ...@@ -29,12 +32,13 @@ if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
nr_hugepgs=`cat /proc/sys/vm/nr_hugepages` nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
hpages_needed=`expr $hpages_test - $freepgs` hpages_needed=`expr $hpages_test - $freepgs`
if [ $UID != 0 ]; then
echo "Please run memfd with hugetlbfs test as root"
exit $ksft_skip
fi
echo 3 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches
echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
if [ $? -ne 0 ]; then
echo "Please run this test as root"
exit 1
fi
while read name size unit; do while read name size unit; do
if [ "$name" = "HugePages_Free:" ]; then if [ "$name" = "HugePages_Free:" ]; then
freepgs=$size freepgs=$size
...@@ -53,7 +57,7 @@ if [ $freepgs -lt $hpages_test ]; then ...@@ -53,7 +57,7 @@ if [ $freepgs -lt $hpages_test ]; then
fi fi
printf "Not enough huge pages available (%d < %d)\n" \ printf "Not enough huge pages available (%d < %d)\n" \
$freepgs $needpgs $freepgs $needpgs
exit 1 exit $ksft_skip
fi fi
# #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment