xref: /linux/tools/testing/selftests/ftrace/test.d/dynevent/dynevent_limitations.tc (revision 6ebf1982038af12f3588417e4fd0417d2551da28)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Checking dynamic events limitations
4# requires: dynamic_events "imm-value":README
5
6# Max arguments limitation
7MAX_ARGS=128
8EXCEED_ARGS=$((MAX_ARGS + 1))
9
10check_max_args() { # event_header
11  TEST_STRING=$1
12  # Acceptable
13  for i in `seq 1 $MAX_ARGS`; do
14    TEST_STRING="$TEST_STRING \\$i"
15  done
16  echo "$TEST_STRING" >> dynamic_events
17  echo > dynamic_events
18  # Error
19  TEST_STRING="$TEST_STRING \\$EXCEED_ARGS"
20  ! echo "$TEST_STRING" >> dynamic_events
21  return 0
22}
23
24# Kprobe max args limitation
25if grep -q "kprobe_events" README; then
26  check_max_args "p vfs_read"
27fi
28
29# Fprobe max args limitation
30if grep -q "f[:[<group>/][<event>]] <func-name>[%return] [<args>]" README; then
31  check_max_args "f vfs_read"
32fi
33
34# Tprobe max args limitation
35if grep -q "t[:[<group>/][<event>]] <tracepoint> [<args>]" README; then
36  check_max_args "t kfree"
37fi
38
39# Uprobe max args limitation
40if grep -q "uprobe_events" README; then
41  check_max_args "p /bin/sh:10"
42fi
43