| From: Axel Rasmussen <axelrasmussen@google.com> |
| Subject: selftests: vm: fix shellcheck warnings in run_vmtests.sh |
| |
| These might not be issues yet, but they make the script more fragile. |
| Also by fixing them we give a better example to future readers, who might |
| copy/paste or otherwise re-use snippets from our script. |
| |
| - Use "read -r", since we don't ever want read to be interpreting '\' |
| characters as escape sequences... |
| - Quote variables, to deal with spaces properly. |
| - Use $() instead of the older and harder-to-nest ``. |
| - Get rid of superfluous "$" prefixes inside arithmetic $(()). |
| |
| Link: https://lkml.kernel.org/r/20220421224928.1848230-2-axelrasmussen@google.com |
| Signed-off-by: Axel Rasmussen <axelrasmussen@google.com> |
| Cc: Shuah Khan <shuah@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| tools/testing/selftests/vm/run_vmtests.sh | 55 +++++++++----------- |
| 1 file changed, 27 insertions(+), 28 deletions(-) |
| |
| --- a/tools/testing/selftests/vm/run_vmtests.sh~selftests-vm-fix-shellcheck-warnings-in-run_vmtestssh |
| +++ a/tools/testing/selftests/vm/run_vmtests.sh |
| @@ -9,12 +9,12 @@ mnt=./huge |
| exitcode=0 |
| |
| #get huge pagesize and freepages from /proc/meminfo |
| -while read name size unit; do |
| +while read -r name size unit; do |
| if [ "$name" = "HugePages_Free:" ]; then |
| - freepgs=$size |
| + freepgs="$size" |
| fi |
| if [ "$name" = "Hugepagesize:" ]; then |
| - hpgsize_KB=$size |
| + hpgsize_KB="$size" |
| fi |
| done < /proc/meminfo |
| |
| @@ -30,27 +30,26 @@ needmem_KB=$((half_ufd_size_MB * 2 * 102 |
| |
| #set proper nr_hugepages |
| if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then |
| - nr_hugepgs=`cat /proc/sys/vm/nr_hugepages` |
| + nr_hugepgs=$(cat /proc/sys/vm/nr_hugepages) |
| needpgs=$((needmem_KB / hpgsize_KB)) |
| tries=2 |
| - while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do |
| - lackpgs=$(( $needpgs - $freepgs )) |
| + while [ "$tries" -gt 0 ] && [ "$freepgs" -lt "$needpgs" ]; do |
| + lackpgs=$((needpgs - freepgs)) |
| echo 3 > /proc/sys/vm/drop_caches |
| - echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages |
| - if [ $? -ne 0 ]; then |
| + if ! echo $((lackpgs + nr_hugepgs)) > /proc/sys/vm/nr_hugepages; then |
| echo "Please run this test as root" |
| exit $ksft_skip |
| fi |
| - while read name size unit; do |
| + while read -r name size unit; do |
| if [ "$name" = "HugePages_Free:" ]; then |
| freepgs=$size |
| fi |
| done < /proc/meminfo |
| tries=$((tries - 1)) |
| done |
| - if [ $freepgs -lt $needpgs ]; then |
| + if [ "$freepgs" -lt "$needpgs" ]; then |
| printf "Not enough huge pages available (%d < %d)\n" \ |
| - $freepgs $needpgs |
| + "$freepgs" "$needpgs" |
| exit 1 |
| fi |
| else |
| @@ -60,11 +59,11 @@ fi |
| |
| #filter 64bit architectures |
| ARCH64STR="arm64 ia64 mips64 parisc64 ppc64 ppc64le riscv64 s390x sh64 sparc64 x86_64" |
| -if [ -z $ARCH ]; then |
| - ARCH=`uname -m 2>/dev/null | sed -e 's/aarch64.*/arm64/'` |
| +if [ -z "$ARCH" ]; then |
| + ARCH=$(uname -m 2>/dev/null | sed -e 's/aarch64.*/arm64/') |
| fi |
| VADDR64=0 |
| -echo "$ARCH64STR" | grep $ARCH && VADDR64=1 |
| +echo "$ARCH64STR" | grep "$ARCH" && VADDR64=1 |
| |
| # Usage: run_test [test binary] [arbitrary test arguments...] |
| run_test() { |
| @@ -85,28 +84,28 @@ run_test() { |
| fi |
| } |
| |
| -mkdir $mnt |
| -mount -t hugetlbfs none $mnt |
| +mkdir "$mnt" |
| +mount -t hugetlbfs none "$mnt" |
| |
| run_test ./hugepage-mmap |
| |
| -shmmax=`cat /proc/sys/kernel/shmmax` |
| -shmall=`cat /proc/sys/kernel/shmall` |
| +shmmax=$(cat /proc/sys/kernel/shmmax) |
| +shmall=$(cat /proc/sys/kernel/shmall) |
| echo 268435456 > /proc/sys/kernel/shmmax |
| echo 4194304 > /proc/sys/kernel/shmall |
| run_test ./hugepage-shm |
| -echo $shmmax > /proc/sys/kernel/shmmax |
| -echo $shmall > /proc/sys/kernel/shmall |
| +echo "$shmmax" > /proc/sys/kernel/shmmax |
| +echo "$shmall" > /proc/sys/kernel/shmall |
| |
| run_test ./map_hugetlb |
| |
| -run_test ./hugepage-mremap $mnt/huge_mremap |
| -rm -f $mnt/huge_mremap |
| +run_test ./hugepage-mremap "$mnt"/huge_mremap |
| +rm -f "$mnt"/huge_mremap |
| |
| run_test ./hugepage-vmemmap |
| |
| -run_test ./hugetlb-madvise $mnt/madvise-test |
| -rm -f $mnt/madvise-test |
| +run_test ./hugetlb-madvise "$mnt"/madvise-test |
| +rm -f "$mnt"/madvise-test |
| |
| echo "NOTE: The above hugetlb tests provide minimal coverage. Use" |
| echo " https://github.com/libhugetlbfs/libhugetlbfs.git for" |
| @@ -124,13 +123,13 @@ run_test ./gup_test -ct -F 0x1 0 19 0x10 |
| run_test ./userfaultfd anon 20 16 |
| # Test requires source and destination huge pages. Size of source |
| # (half_ufd_size_MB) is passed as argument to test. |
| -run_test ./userfaultfd hugetlb $half_ufd_size_MB 32 |
| +run_test ./userfaultfd hugetlb "$half_ufd_size_MB" 32 |
| run_test ./userfaultfd shmem 20 16 |
| |
| #cleanup |
| -umount $mnt |
| -rm -rf $mnt |
| -echo $nr_hugepgs > /proc/sys/vm/nr_hugepages |
| +umount "$mnt" |
| +rm -rf "$mnt" |
| +echo "$nr_hugepgs" > /proc/sys/vm/nr_hugepages |
| |
| run_test ./compaction_test |
| |
| _ |