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 17kmemleak="/sys/kernel/debug/kmemleak" 18if [ ! -f "$kmemleak" ] 19then 20 echo "$kmemleak not found" 21 exit $ksft_skip 22fi 23 24# ensure filter directory 25echo 1 > "$damon_sysfs/kdamonds/nr_kdamonds" 26echo 1 > "$damon_sysfs/kdamonds/0/contexts/nr_contexts" 27echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes" 28echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/0/filters/nr_filters" 29 30filter_dir="$damon_sysfs/kdamonds/0/contexts/0/schemes/0/filters/0" 31 32# try to leak 128 times 33for i in {1..128}; 34do 35 echo "012345678901234567890123456789" > "$filter_dir/memcg_path" 36done 37 38echo scan > "$kmemleak" 39kmemleak_report=$(cat "$kmemleak") 40if [ "$kmemleak_report" = "" ] 41then 42 exit 0 43fi 44echo "$kmemleak_report" 45exit 1 46