#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Tracepoint probe event parser error log check
# requires: dynamic_events "t[:[<group>/][<event>]] <tracepoint> [<args>]":README

check_error() { # command-with-error-pos-by-^
    ftrace_errlog_check 'trace_fprobe' "$1" 'dynamic_events'
}

check_error 't^100 kfree'		# BAD_MAXACT_TYPE

check_error 't ^non_exist_tracepoint'	# NO_TRACEPOINT
check_error 't:^/bar kfree'		# NO_GROUP_NAME
check_error 't:^12345678901234567890123456789012345678901234567890123456789012345/bar kfree'	# GROUP_TOO_LONG

check_error 't:^foo.1/bar kfree'	# BAD_GROUP_NAME
check_error 't:^ kfree'			# NO_EVENT_NAME
check_error 't:foo/^12345678901234567890123456789012345678901234567890123456789012345 kfree'	# EVENT_TOO_LONG
check_error 't:foo/^bar.1 kfree'	# BAD_EVENT_NAME

check_error 't kfree ^$retval'		# RETVAL_ON_PROBE
check_error 't kfree ^$stack10000'	# BAD_STACK_NUM

check_error 't kfree ^$arg10000'	# BAD_ARG_NUM

check_error 't kfree ^$none_var'	# BAD_VAR
check_error 't kfree ^%rax'		# BAD_VAR

check_error 't kfree ^@12345678abcde'	# BAD_MEM_ADDR
check_error 't kfree ^@+10'		# FILE_ON_KPROBE

grep -q "imm-value" README && \
check_error 't kfree arg1=\^x'	# BAD_IMM
grep -q "imm-string" README && \
check_error 't kfree arg1=\"abcd^'	# IMMSTR_NO_CLOSE

check_error 't kfree ^+0@0)'		# DEREF_NEED_BRACE
check_error 't kfree ^+0ab1(@0)'	# BAD_DEREF_OFFS
check_error 't kfree +0(+0(@0^)'	# DEREF_OPEN_BRACE

if grep -A1 "fetcharg:" README | grep -q '\$comm' ; then
check_error 't kfree +0(^$comm)'	# COMM_CANT_DEREF
fi

check_error 't kfree ^&1'		# BAD_FETCH_ARG


# We've introduced this limitation with array support
if grep -q ' <type>\\\[<array-size>\\\]' README; then
check_error 't kfree +0(^+0(+0(+0(+0(+0(+0(+0(+0(+0(+0(+0(+0(+0(@0))))))))))))))'	# TOO_MANY_OPS?
check_error 't kfree +0(@11):u8[10^'		# ARRAY_NO_CLOSE
check_error 't kfree +0(@11):u8[10]^a'		# BAD_ARRAY_SUFFIX
check_error 't kfree +0(@11):u8[^10a]'		# BAD_ARRAY_NUM
check_error 't kfree +0(@11):u8[^256]'		# ARRAY_TOO_BIG
fi

check_error 't kfree @11:^unknown_type'		# BAD_TYPE
check_error 't kfree $stack0:^string'		# BAD_STRING
check_error 't kfree @11:^b10@a/16'		# BAD_BITFIELD

check_error 't kfree ^arg123456789012345678901234567890=@11'	# ARG_NAME_TOO_LOG
check_error 't kfree ^=@11'			# NO_ARG_NAME
check_error 't kfree ^var.1=@11'		# BAD_ARG_NAME
check_error 't kfree var1=@11 ^var1=@12'	# USED_ARG_NAME
check_error 't kfree ^+1234567(+1234567(+1234567(+1234567(+1234567(+1234567(@1234))))))'	# ARG_TOO_LONG
check_error 't kfree arg1=^'			# NO_ARG_BODY


# multiprobe errors
if grep -q "Create/append/" README && grep -q "imm-value" README; then
echo "t:tracepoint/testevent kfree" > dynamic_events
check_error '^f:tracepoint/testevent kfree'	# DIFF_PROBE_TYPE

# Explicitly use printf "%s" to not interpret \1
printf "%s" "t:tracepoints/testevent kfree abcd=\\1" > dynamic_events
check_error "t:tracepoints/testevent kfree ^bcd=\\1"	# DIFF_ARG_TYPE
check_error "t:tracepoints/testevent kfree ^abcd=\\1:u8"	# DIFF_ARG_TYPE
check_error "t:tracepoints/testevent kfree ^abcd=\\\"foo\"" # DIFF_ARG_TYPE
check_error "^t:tracepoints/testevent kfree abcd=\\1"	# SAME_PROBE
fi

exit 0
