Skip to content

Commit 51f58e9

Browse files
committed
check: fix kmemleak scan when DEBUG_KMEMLEAK_DEFAULT_OFF enabled
Scan kmemleak will be failed when DEBUG_KMEMLEAK_DEFAULT_OFF enabled. We have to add kmemleak=on to cmdline to fully enable kmemleak. $ grep -rn KMEMLEAK_DEFAULT /boot/config-6.19.0-0.rc6.260122ga66191c590b3b.45.eln154.aarch64+debug CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y $ ll /sys/kernel/debug/kmemleak -rw-r--r--. 1 root root 0 Jan 23 00:12 /sys/kernel/debug/kmemleak $ echo scan >/sys/kernel/debug/kmemleak -bash: echo: write error: Operation not permitted Signed-off-by: Yi Zhang <[email protected]> Suggested-by: Nilay Shroff <[email protected]> Suggested-by: Shin'ichiro Kawasaki <[email protected]>
1 parent 157f100 commit 51f58e9

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

check

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -208,27 +208,33 @@ _check_kernel_option() {
208208
return 1
209209
}
210210

211-
_setup_kmemleak() {
212-
local f="/sys/kernel/debug/kmemleak"
211+
declare KMEMLEAK=0
212+
declare KMEMLEAK_FILE=/sys/kernel/debug/kmemleak
213213

214-
if [[ ! -e $f || ! -r $f ]]; then
215-
return 0
214+
if _check_kernel_option DEBUG_KMEMLEAK && [[ -e $KMEMLEAK_FILE && -r $KMEMLEAK_FILE ]]; then
215+
if _check_kernel_option DEBUG_KMEMLEAK_DEFAULT_OFF; then
216+
if grep --quiet kmemleak=on /proc/cmdline; then
217+
KMEMLEAK=1
218+
fi
219+
else
220+
KMEMLEAK=1
216221
fi
222+
fi
217223

218-
echo clear > "$f"
224+
_setup_kmemleak() {
225+
if ((KMEMLEAK)) ;then
226+
echo clear > "$KMEMLEAK_FILE"
227+
fi
219228
}
220229

221230
_check_kmemleak() {
222231
local kmemleak
223-
local f="/sys/kernel/debug/kmemleak"
224232

225-
if [[ ! -e $f || ! -r $f ]]; then
226-
return 0
227-
fi
233+
((KMEMLEAK)) || return 0
228234

229-
echo scan > "$f"
235+
echo scan > "$KMEMLEAK_FILE"
230236
sleep 1
231-
kmemleak=$(cat "$f")
237+
kmemleak=$(cat "$KMEMLEAK_FILE")
232238

233239
if [[ -z $kmemleak ]]; then
234240
return 0

0 commit comments

Comments
 (0)