From nobody Sun Feb 8 19:20:49 2026 Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 085DE2D47F4 for ; Fri, 16 Jan 2026 07:17:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768547881; cv=none; b=fO2qxgevVDTgQrZ2kI10HyPAK2Wp+YNNYDjy3U2rKgqq0mw12WVMKe/etIq9cgWbIIt9rKXL4UAFUZrIGdvlHp3hBBKdJb4a/hmR8NYmaw0hc4ZbEjmEF0VnEAaocMdyYXDK4MZqxFyrrU3mxESNPMALZ4T/uHeA59Zfb8lNPqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768547881; c=relaxed/simple; bh=sVKvb5Nz1A+WPx1wLx+juOJWf6PmzJcfp77DQOrJTzQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bSL+WGgWTrd/zqytXe1htxQEy4hcFz05npKlMLkK5x6nVqeAUxY1QPIYChdS3KxypaSz4lMp2jmdTKJiNqMMKCto5YlMOpqo9IQ+G9Q0ezQiHujx/4euTpgQWxYUZ6Kk9zGLcRh1cJ41AeaOEh4F6nh8LCKXWkYe02+G2+oJ/gw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cFopeO5r; arc=none smtp.client-ip=209.85.214.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cFopeO5r" Received: by mail-pl1-f195.google.com with SMTP id d9443c01a7336-2a137692691so10855275ad.0 for ; Thu, 15 Jan 2026 23:17:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768547879; x=1769152679; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/38jAZCyYx52GHr4cYx6xhDB60Qm+8nD9DL091nuyss=; b=cFopeO5rmtJxJ1mKdAJm/BefMHjqMme0PVR1hLLvDg0vWCgEE6+Jw+5mYNPgPe2bWt 4itli1YwDfx61z5q3xa/9CghHDr+4Tbh8zgeaoKbcsym6nwUAF9OBM4d+1j2tsDCgjwb dmVgsw1zcg+pYb+/sYlhCGUjJ0XXC6/scU1z9aB1ng9ARLgpU18cErHyOBDA5D4Bovr6 SmH/wb5m3FNmRaZXgSzQAyMEqrgIpGF72OpjJFBy1sRDjrZvEY92KnuFR4riB2l+rsN+ 132Tvkuh0n/K4G+lJEBFcRbCMK2nEe3Pfdx1RvsjK601r3rPHK+6eVvVLs+LyU7N19We ZpYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768547879; x=1769152679; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/38jAZCyYx52GHr4cYx6xhDB60Qm+8nD9DL091nuyss=; b=QvteotZQqTHOkXmpzu7GJJ1QG91aGNqvC3JcOuIPxmkLOKnWdGx+jAswoHiGB8ytvu fvq0vOPqowS/dTYI41lfvPJEwgwrddeSGDP5VOqvSdiT1GXkLV1i6E7sB5ZpSZwNDgd4 y80djuc2DtVAXT+fJJ3HN4lwWapTnQfnOk2HNbj5zApK77A++VCS85+lr0B/xn1UyZp+ U2V/qajQlrRfucuD2O5K4NJ5R1+kbdvMZaxP2Q58544dSEJB3pmcGoCAxyued7UvqaN5 XsWnL8ggMfgaGBgi0Mof2qBU3Il9RlcgxUS/m+DB8bImcuOz1QNuSfn56tvoF2MNl13P DnFQ== X-Forwarded-Encrypted: i=1; AJvYcCV/1tJDIhlNp2zqzmxVv9bhHYFT7DSdx3fqdR7Cdr0x7O2LjiIxlkQkJd4mlrWp4gPDUVzBwHwxpy8wUlM=@vger.kernel.org X-Gm-Message-State: AOJu0YxnfBJsrE/MKz5vc2XXVDP7yHCLZWoEOHGnrLomazhkZUrGhDf+ kL00+e2JaBUD6g/QNHFSeozvH1AGVDWA0vxoH5IRw5WulBUylz/kYwLd X-Gm-Gg: AY/fxX50nxtEGKfAZS1vepedeViSnOKaEnVRGBZsPgIxlA+zLlDV2KsLdgQuRyTN4aB Hrl55B21YgRcc5SLWqsrpH7f7jKrNaK+aREG5lib4kPEFOFbtZd+rEZO4p86gZ/bTY5B5EwjMRT D+tnMkKDvc8yjzbII1OkBPqI7TMZA4D4pKjEAFLHXlx4RLAwUzjkcBecvQrY0PaXiC3CkSIV5r2 j/Zahp1GVLFCCKbek41pvqm906RaVHTbF7YQ4NkJtRPdHDRj7uG5NPEwEcZqUHvzB8MyjeuNdQD OP1rq5z5VZZC/ueoXIEeJ8+LCfurGr0QR/2+69d9cW9H33cuArdIxK2txeS2EmdqsXiihZwU4mc KjBsj6GaMWvKDvuhjV5Mk+N/MII6Z3cCFb2UdQFGc0mdxhy30KruoQ4IaItkvWRd4+yeOOxmBzH AtMLPmhIc= X-Received: by 2002:a17:903:40cb:b0:2a0:faf1:782 with SMTP id d9443c01a7336-2a717519edbmr16762915ad.9.1768547879099; Thu, 15 Jan 2026 23:17:59 -0800 (PST) Received: from 7940hx ([160.187.0.149]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ce2ebsm12508275ad.32.2026.01.15.23.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 23:17:58 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: ast@kernel.org Cc: daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, mattbobrowski@google.com, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, bpf@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH bpf-next v2 1/2] bpf: support bpf_get_func_arg() for BPF_TRACE_RAW_TP Date: Fri, 16 Jan 2026 15:17:38 +0800 Message-ID: <20260116071739.121182-2-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260116071739.121182-1-dongml2@chinatelecom.cn> References: <20260116071739.121182-1-dongml2@chinatelecom.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" For now, bpf_get_func_arg() and bpf_get_func_arg_cnt() is not supported by the BPF_TRACE_RAW_TP, which is not convenient to get the argument of the tracepoint, especially for the case that the position of the arguments in a tracepoint can change. The target tracepoint BTF type id is specified during loading time, therefore we can get the function argument count from the function prototype instead of the stack. Signed-off-by: Menglong Dong --- v2: - for nr_args, skip first 'void *__data' argument in btf_trace_##name typedef --- kernel/bpf/verifier.c | 36 ++++++++++++++++++++++++++++++++---- kernel/trace/bpf_trace.c | 4 ++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index faa1ecc1fe9d..422d35c100ff 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -23316,8 +23316,22 @@ static int do_misc_fixups(struct bpf_verifier_env = *env) /* Implement bpf_get_func_arg inline. */ if (prog_type =3D=3D BPF_PROG_TYPE_TRACING && insn->imm =3D=3D BPF_FUNC_get_func_arg) { - /* Load nr_args from ctx - 8 */ - insn_buf[0] =3D BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1, -8); + if (eatype =3D=3D BPF_TRACE_RAW_TP) { + int nr_args; + + if (!prog->aux->attach_func_proto) + return -EINVAL; + /* + * skip first 'void *__data' argument in btf_trace_##name + * typedef + */ + nr_args =3D btf_type_vlen(prog->aux->attach_func_proto) - 1; + /* Save nr_args to reg0 */ + insn_buf[0] =3D BPF_MOV64_IMM(BPF_REG_0, nr_args); + } else { + /* Load nr_args from ctx - 8 */ + insn_buf[0] =3D BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1, -8); + } insn_buf[1] =3D BPF_JMP32_REG(BPF_JGE, BPF_REG_2, BPF_REG_0, 6); insn_buf[2] =3D BPF_ALU64_IMM(BPF_LSH, BPF_REG_2, 3); insn_buf[3] =3D BPF_ALU64_REG(BPF_ADD, BPF_REG_2, BPF_REG_1); @@ -23369,8 +23383,22 @@ static int do_misc_fixups(struct bpf_verifier_env = *env) /* Implement get_func_arg_cnt inline. */ if (prog_type =3D=3D BPF_PROG_TYPE_TRACING && insn->imm =3D=3D BPF_FUNC_get_func_arg_cnt) { - /* Load nr_args from ctx - 8 */ - insn_buf[0] =3D BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1, -8); + if (eatype =3D=3D BPF_TRACE_RAW_TP) { + int nr_args; + + if (!prog->aux->attach_func_proto) + return -EINVAL; + /* + * skip first 'void *__data' argument in btf_trace_##name + * typedef + */ + nr_args =3D btf_type_vlen(prog->aux->attach_func_proto) - 1; + /* Save nr_args to reg0 */ + insn_buf[0] =3D BPF_MOV64_IMM(BPF_REG_0, nr_args); + } else { + /* Load nr_args from ctx - 8 */ + insn_buf[0] =3D BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1, -8); + } =20 new_prog =3D bpf_patch_insn_data(env, i + delta, insn_buf, 1); if (!new_prog) diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index 6e076485bf70..9b1b56851d26 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -1734,11 +1734,11 @@ tracing_prog_func_proto(enum bpf_func_id func_id, c= onst struct bpf_prog *prog) case BPF_FUNC_d_path: return &bpf_d_path_proto; case BPF_FUNC_get_func_arg: - return bpf_prog_has_trampoline(prog) ? &bpf_get_func_arg_proto : NULL; + return &bpf_get_func_arg_proto; case BPF_FUNC_get_func_ret: return bpf_prog_has_trampoline(prog) ? &bpf_get_func_ret_proto : NULL; case BPF_FUNC_get_func_arg_cnt: - return bpf_prog_has_trampoline(prog) ? &bpf_get_func_arg_cnt_proto : NUL= L; + return &bpf_get_func_arg_cnt_proto; case BPF_FUNC_get_attach_cookie: if (prog->type =3D=3D BPF_PROG_TYPE_TRACING && prog->expected_attach_type =3D=3D BPF_TRACE_RAW_TP) --=20 2.52.0 From nobody Sun Feb 8 19:20:49 2026 Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D29A32D47F4 for ; Fri, 16 Jan 2026 07:18:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768547888; cv=none; b=fmUKltE/q1mRQhCTWPOqkn3lQm425b24BD3RLPRM1Uet/mFOg8MQ61UwXGSdNsZ5AC6E+DQqyYF/gWDUi3iz3+9rFm7plwdvleM6R4uMO+Z0Onnnv5gAuqDzutWv8Q/p2NqRbJybaEizddDN3jXcxTrQnRcw+WD/CixLAWSP8ZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768547888; c=relaxed/simple; bh=EaAxHhBihNbgSpMWs6VwmPwyGN3Y9pEdX7OYsgkOQdg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dRrDlkqEyiyaYDPXZNlYx8SRXO4rcqSkvowbw7FWiddAEukwXdg15IFAgSO/rRpox81zLZqYzsXOg1PadqBdxjVSFYHbPmIfExhkHo4Gow6BkHqQ83WuVqKwLuPjg3FTO3vgJqrCaBCeM3EyVvenfOVE6A/J9sUwA7BEc08HEM4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nj/uzXTq; arc=none smtp.client-ip=209.85.214.193 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nj/uzXTq" Received: by mail-pl1-f193.google.com with SMTP id d9443c01a7336-2a1022dda33so10519455ad.2 for ; Thu, 15 Jan 2026 23:18:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768547886; x=1769152686; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8W6hsT0Cah8oIHuXixUZEynPv/ALwNuU4vKUiOQ3rA0=; b=nj/uzXTq4YLSFoRTfHyQM/TJhdgZeAjN96mraSn09sBGJWKGtN4GyvlautqfKlaXBQ +w6bXhVYa1E7/rewQ14DP1W1CcUR/w9FO96FDFyyC8tAuF1yc41z96wAwdrMIZlVSFaW 9VWe1qLC7ticEVdPxC1PRMcWv/FeWOMZf1nK5OFJfkUHmUgZsis0kPsxgjGyWrvB3O9x 50vbTbVsnM++rdQhOqa8MtIxyMbG4EhgdkRrhXgg5PwxFJciQkEPBX22wI21e32ekxBp se9lXDqcVpRzdUOifuSEGFfv4/Atv6Ufw+XJvd6JBQdO6eZnrqvsupjFA90wWuyCII45 kdnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768547886; x=1769152686; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8W6hsT0Cah8oIHuXixUZEynPv/ALwNuU4vKUiOQ3rA0=; b=Rg1fmTpf06W/E9tJQZU7B/E4dX22NJt46D1MYpbn1sWfYMrGs5MBl5a0P5VuNiDnX2 HqeLZ+kjoqKy35r9muTd6LoHJPm+iEioAo7tdw0yUtbPznzIphBkQYzZ7VlZXPXNOcKe E4r2n7LpbJqUfouho1Uc5cu4hvSNCmDeD+QpzI9Ply67VI0umtP6Nz4V0Pwmj88fbW0o DC0twno990b5P3eG/qWUdmQZMtpmzSqAuiIEumW4S4+cHip5VbBO/04M0anCSv93xb9f AtOt0iVWJY1/i/6XATcFmMsMSQf/rCcQyxut3D9NB+k0bQwx7WqEgywIHhwIqu2/0CeJ kxDg== X-Forwarded-Encrypted: i=1; AJvYcCW9bdESmqsHT69hUblMJESFz0ZeM5Dev7zus5cmGFQSF2cs9RPi4q0yNAlCX22w9o7L45xW3RH+ECbbsTU=@vger.kernel.org X-Gm-Message-State: AOJu0YwzmKvAbInKuTxNXTdLgxUxJ40Rb8hr7o6jrwYwYOS1aoX+wAXt 3JhpwRjOUdsf2nqhem4lgMSouCCAxEefoJYmRkjS7FvbNxujRci7AQnG X-Gm-Gg: AY/fxX4Gp+GbycM3Zpc/6EXrcVczu298kjfr7tyfIxcsTEd+YScCFUiqHgsh+mijg1S 1OEovedfTxjNPNI6Km1B0zw72jRHT9Fnz+QhfzJsdHn8dwPs/NXH8vhSfSb1dVF79SUI2a5bOjB Vkh+xJkjPM4ZIuziBSAZLOf4watKsa2LUmH9qI4UVMcP2mYu1yej1+egcImFS7zksjgW9JVJv0v NkQBfwft4xM9xznNTDSj6r9HHwcpxQrBo5tEKiv1xZALTIDAHZkzal27MvZ00r1qyAAPIZXSL7G XW+dyboZ6Ea79OR5B2ZbcwJtQxAwe9OlUxacMPU6oYAfGxcEvOmrqFNx+RDeHFBEa2CjAzEazgo KWiSMitkm46LyTxHKsNvoqkBMwP6DFTUPwWkWQ94mBabC0alaITda1njnGvfWyXKWP8GzN/aS3J UJpyIIGOI= X-Received: by 2002:a17:903:41c7:b0:297:f8d9:aad7 with SMTP id d9443c01a7336-2a7177dfcb2mr18715785ad.50.1768547886068; Thu, 15 Jan 2026 23:18:06 -0800 (PST) Received: from 7940hx ([160.187.0.149]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ce2ebsm12508275ad.32.2026.01.15.23.17.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 23:18:05 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: ast@kernel.org Cc: daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, mattbobrowski@google.com, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, bpf@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH bpf-next v2 2/2] selftests/bpf: test bpf_get_func_arg() for tp_btf Date: Fri, 16 Jan 2026 15:17:39 +0800 Message-ID: <20260116071739.121182-3-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260116071739.121182-1-dongml2@chinatelecom.cn> References: <20260116071739.121182-1-dongml2@chinatelecom.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Test bpf_get_func_arg() and bpf_get_func_arg_cnt() for tp_btf. The code is most copied from test1 and test2. Signed-off-by: Menglong Dong --- .../bpf/prog_tests/get_func_args_test.c | 3 ++ .../selftests/bpf/progs/get_func_args_test.c | 45 +++++++++++++++++++ .../bpf/test_kmods/bpf_testmod-events.h | 10 +++++ .../selftests/bpf/test_kmods/bpf_testmod.c | 4 ++ 4 files changed, 62 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/get_func_args_test.c b/= tools/testing/selftests/bpf/prog_tests/get_func_args_test.c index 64a9c95d4acf..fadee95d3ae8 100644 --- a/tools/testing/selftests/bpf/prog_tests/get_func_args_test.c +++ b/tools/testing/selftests/bpf/prog_tests/get_func_args_test.c @@ -33,11 +33,14 @@ void test_get_func_args_test(void) =20 ASSERT_EQ(topts.retval >> 16, 1, "test_run"); ASSERT_EQ(topts.retval & 0xffff, 1234 + 29, "test_run"); + ASSERT_OK(trigger_module_test_read(1), "trigger_read"); =20 ASSERT_EQ(skel->bss->test1_result, 1, "test1_result"); ASSERT_EQ(skel->bss->test2_result, 1, "test2_result"); ASSERT_EQ(skel->bss->test3_result, 1, "test3_result"); ASSERT_EQ(skel->bss->test4_result, 1, "test4_result"); + ASSERT_EQ(skel->bss->test5_result, 1, "test5_result"); + ASSERT_EQ(skel->bss->test6_result, 1, "test6_result"); =20 cleanup: get_func_args_test__destroy(skel); diff --git a/tools/testing/selftests/bpf/progs/get_func_args_test.c b/tools= /testing/selftests/bpf/progs/get_func_args_test.c index e0f34a55e697..4b0dc233d498 100644 --- a/tools/testing/selftests/bpf/progs/get_func_args_test.c +++ b/tools/testing/selftests/bpf/progs/get_func_args_test.c @@ -121,3 +121,48 @@ int BPF_PROG(fexit_test, int _a, int *_b, int _ret) test4_result &=3D err =3D=3D 0 && ret =3D=3D 1234; return 0; } + +__u64 test5_result =3D 0; +SEC("tp_btf/bpf_testmod_fentry_test1_tp") +int BPF_PROG(tp_test1) +{ + __u64 cnt =3D bpf_get_func_arg_cnt(ctx); + __u64 a =3D 0, z =3D 0; + __s64 err; + + test5_result =3D cnt =3D=3D 1; + + err =3D bpf_get_func_arg(ctx, 0, &a); + test5_result &=3D err =3D=3D 0 && ((int) a =3D=3D 1); + bpf_printk("cnt=3D%d a=3D%d\n", cnt, (int)a); + + /* not valid argument */ + err =3D bpf_get_func_arg(ctx, 1, &z); + test5_result &=3D err =3D=3D -EINVAL; + + return 0; +} + +__u64 test6_result =3D 0; +SEC("tp_btf/bpf_testmod_fentry_test2_tp") +int BPF_PROG(tp_test2) +{ + __u64 cnt =3D bpf_get_func_arg_cnt(ctx); + __u64 a =3D 0, b =3D 0, z =3D 0; + __s64 err; + + test6_result =3D cnt =3D=3D 2; + + /* valid arguments */ + err =3D bpf_get_func_arg(ctx, 0, &a); + test6_result &=3D err =3D=3D 0 && (int) a =3D=3D 2; + + err =3D bpf_get_func_arg(ctx, 1, &b); + test6_result &=3D err =3D=3D 0 && b =3D=3D 3; + + /* not valid argument */ + err =3D bpf_get_func_arg(ctx, 2, &z); + test6_result &=3D err =3D=3D -EINVAL; + + return 0; +} diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h b/= tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h index aeef86b3da74..45a5e41f3a92 100644 --- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h +++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h @@ -63,6 +63,16 @@ BPF_TESTMOD_DECLARE_TRACE(bpf_testmod_test_writable_bare, sizeof(struct bpf_testmod_test_writable_ctx) ); =20 +DECLARE_TRACE(bpf_testmod_fentry_test1, + TP_PROTO(int a), + TP_ARGS(a) +); + +DECLARE_TRACE(bpf_testmod_fentry_test2, + TP_PROTO(int a, u64 b), + TP_ARGS(a, b) +); + #endif /* _BPF_TESTMOD_EVENTS_H */ =20 #undef TRACE_INCLUDE_PATH diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c b/tools/t= esting/selftests/bpf/test_kmods/bpf_testmod.c index bc07ce9d5477..f3698746f033 100644 --- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c +++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c @@ -396,11 +396,15 @@ __weak noinline struct file *bpf_testmod_return_ptr(i= nt arg) =20 noinline int bpf_testmod_fentry_test1(int a) { + trace_bpf_testmod_fentry_test1_tp(a); + return a + 1; } =20 noinline int bpf_testmod_fentry_test2(int a, u64 b) { + trace_bpf_testmod_fentry_test2_tp(a, b); + return a + b; } =20 --=20 2.52.0