1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: Kprobe event user-memory access 4 5[ -f kprobe_events ] || exit_unsupported # this is configurable 6 7grep -q '\$arg<N>' README || exit_unresolved # depends on arch 8grep -A10 "fetcharg:" README | grep -q 'ustring' || exit_unsupported 9grep -A10 "fetcharg:" README | grep -q '\[u\]<offset>' || exit_unsupported 10 11:;: "user-memory access syntax and ustring working on user memory";: 12echo 'p:myevent do_sys_open path=+0($arg2):ustring path2=+u0($arg2):string' \ 13 > kprobe_events 14 15grep myevent kprobe_events | \ 16 grep -q 'path=+0($arg2):ustring path2=+u0($arg2):string' 17echo 1 > events/kprobes/myevent/enable 18echo > /dev/null 19echo 0 > events/kprobes/myevent/enable 20 21grep myevent trace | grep -q 'path="/dev/null" path2="/dev/null"' 22 23:;: "user-memory access syntax and ustring not working with kernel memory";: 24echo 'p:myevent vfs_symlink path=+0($arg3):ustring path2=+u0($arg3):string' \ 25 > kprobe_events 26echo 1 > events/kprobes/myevent/enable 27ln -s foo $TMPDIR/bar 28echo 0 > events/kprobes/myevent/enable 29 30grep myevent trace | grep -q 'path=(fault) path2=(fault)' 31 32exit 0 33