1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4if [ $EUID -ne 0 ] 5then 6 echo "Run as root" 7 exit $ksft_skip 8fi 9 10damon_sysfs="/sys/kernel/mm/damon/admin" 11if [ ! -d "$damon_sysfs" ] 12then 13 echo "damon sysfs not found" 14 exit $ksft_skip 15fi 16 17# ensure filter directory 18echo 1 > "$damon_sysfs/kdamonds/nr_kdamonds" 19echo 1 > "$damon_sysfs/kdamonds/0/contexts/nr_contexts" 20echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes" 21echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/0/filters/nr_filters" 22 23filter_dir="$damon_sysfs/kdamonds/0/contexts/0/schemes/0/filters/0" 24 25before_kb=$(grep Slab /proc/meminfo | awk '{print $2}') 26 27# try to leak 3000 KiB 28for i in {1..102400}; 29do 30 echo "012345678901234567890123456789" > "$filter_dir/memcg_path" 31done 32 33after_kb=$(grep Slab /proc/meminfo | awk '{print $2}') 34# expect up to 1500 KiB free from other tasks memory 35expected_after_kb_max=$((before_kb + 1500)) 36 37if [ "$after_kb" -gt "$expected_after_kb_max" ] 38then 39 echo "maybe memcg_path are leaking: $before_kb -> $after_kb" 40 exit 1 41else 42 exit 0 43fi 44