xref: /linux/tools/testing/selftests/damon/sysfs_memcg_path_leak.sh (revision 6aacab308a5dfd222b2d23662bbae60c11007cfb)
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