From nobody Sun Feb 8 10:21:48 2026 Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) (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 BD9E923EA83 for ; Fri, 16 Jan 2026 03:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768535443; cv=none; b=S9U021SlIj38slFDi39Ax9dARH3PYOXRuuKUHUfSgxBoyhTNx6w0il9FWSPCXVm8MyAeEeGf6X7g9mO0R4sVx8le1KyaLoCA5v6cr3Gff51Hz3KInWoWhmYS+tH5H1FeN3tBtIQNW7F1j5Tl+21Q9FyI9b+Hp8+2YrQUybBN0Vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768535443; c=relaxed/simple; bh=zY4lZ/WMgcwk7KKWgJshhVk7lhJb+yixU/AKr0hQg7o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oM5sNNO6q7OpxNghv0jNwWUdCyBmyqqv3TQLkrTdottYe/9GPs2sDivzF81OsXiF5j8HDxGKmvOoaIU3gCKc0ht4DSSYNgAu565+qrYwZx2hTS9Ry4TjQuQyMo6nvCK1kywhtzuaSiOFa159MX1B/EpnlTbRk8MsisP1y18tPm8= 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=Lpl0y07W; arc=none smtp.client-ip=209.85.216.66 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="Lpl0y07W" Received: by mail-pj1-f66.google.com with SMTP id 98e67ed59e1d1-34f634dbfd6so1143754a91.2 for ; Thu, 15 Jan 2026 19:50:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768535441; x=1769140241; 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=slOe1FPJhANQ1vYoC8HEpAu7LLkuMBjol/KDdw72Pdw=; b=Lpl0y07WMPHwr8G+d0TDk9fDHg5C0Xs9Yw+7OgBcZ13/8xY8Ht1zjp47PYY17pYSSD /2lDmt+KJDvUZTqVukCJKTXoINUfeeQdNrme+1dWmD6HrWeILqLZFx8l3SaswgBo+uEf C8UbmxbEtIzYRKHPVBgGvBOQYMrMVZM6rQ61gF65I9+ENOemJjERZGkrbdr4+54LxhVq PxXSxQ7o++yHedCwDA19rk+Hsxh2XCeVyKUVbaZIZ+mSrJGPyLLO8nrVd6SK9kgEwXpz rNF/5MKOJ2NTIM+XWuIHNUinLdorjSOW8JfQATDvly0Gz18oJvPwabH0aW2OXvpUOM+v vDzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768535441; x=1769140241; 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=slOe1FPJhANQ1vYoC8HEpAu7LLkuMBjol/KDdw72Pdw=; b=jb3t/ZXDMyD8HwszXQnirwhOp4m6PnQ1rnusS26w8Jrt2rY8SSMZUjgjgga/kn5qN4 yOjxiTpJtlHVnNYYrddaqPG9uq5YkX3f/1mFXab8hwed3d4/GtJwlvFZkwBYwzP65wXe wg1Fq4i2RUOkZNvNFs32Hgvx34lm29eeuapDLpZyGfLBCSbcp9+I1cWl7MVZGJuKr0iK vWJTGMEoqC+SA3WSnltnHLAEca6iSYWqOOv5eI3sB2dxJjGp5OKmAZNRdr8X6MLfuETE Qqk5HedlqFuizziLS6C22oc1lY+mi4iuU2ZSJpAF/BgNlwB6Q8X32yf2V0xMeTBiUZm7 wSJA== X-Forwarded-Encrypted: i=1; AJvYcCUA6V0Yp4+U+VBeRrXduiGyPterTB0CPVrhGHhIbFWNvpjNCEFuwCaKu50WNduUB40Kkl1elIEE8CsWRaY=@vger.kernel.org X-Gm-Message-State: AOJu0YxZl+XS39xRlW88ynLvY9aw/w5AR8s92WkrCSRvjhm8qkzP59Qg qXQusnz8rT2HLuD8bacE8xUS046ZvfoQPdVsYo4Icf+Lhc49uM9yGukW X-Gm-Gg: AY/fxX55PNoAw0BPasUQYurAlZuC7dT3Pz4P9kNPsnTire4qZdThFPzxWsJ32Qa9r6W /y1J5ypSB7E/Y60Ft2gvWpUkWGw9GbWODIds+Brgnw4Kl0mrbgCnBA4aR0j7e5ZVEwNRQmHXQ7/ N9ZCzlKDi9Wcr9opQ9NAim+ib7a2fZkUtMIk2lcNYAdKDD11n/+7Fjh59rnLYR+7ckrPoKb804C c264EBeN1EwKJxcGlhiYzU7lsqNd/UrX8N0u8OLovGOBuVvwiATdBt9N/FEQaGWP2mD6SowBwcs nlGkp/7sZLaFlr6Zw9cgILx3eJYjoozJ4sfxukXla1LEgPWwACeS9iECLuCACTTqIkh+G50DguJ BoLVIHnFtM9rPIWFy2M1y95c6E09f+MH0f4jL5u3A+53L+9og65FH48VKZKfNbSc//MLpHOzqEw VFa6wJ7j4= X-Received: by 2002:a17:90b:2f44:b0:34a:48ff:694 with SMTP id 98e67ed59e1d1-35272fa908emr1225888a91.31.1768535441060; Thu, 15 Jan 2026 19:50:41 -0800 (PST) Received: from 7940hx ([160.187.0.149]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c5edf37c9d7sm684504a12.35.2026.01.15.19.50.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:50:40 -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 1/2] bpf: support bpf_get_func_arg() for BPF_TRACE_RAW_TP Date: Fri, 16 Jan 2026 11:50:23 +0800 Message-ID: <20260116035024.98214-2-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260116035024.98214-1-dongml2@chinatelecom.cn> References: <20260116035024.98214-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 conut from the function prototype instead of the stack. Signed-off-by: Menglong Dong --- kernel/bpf/verifier.c | 28 ++++++++++++++++++++++++---- kernel/trace/bpf_trace.c | 4 ++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index faa1ecc1fe9d..6dee0defa291 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -23316,8 +23316,18 @@ 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; + nr_args =3D btf_type_vlen(prog->aux->attach_func_proto); + /* 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 +23379,18 @@ 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; + nr_args =3D btf_type_vlen(prog->aux->attach_func_proto); + /* 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 10:21:48 2026 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) (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 2572529A1 for ; Fri, 16 Jan 2026 03:50:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.196 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768535449; cv=none; b=V0ZXT60z3TRTxFMrl/yXwJtKiw7gM6XgasvAz+YC+KBqpyB5BDI4aF5IGEc9DMwHMQIrJpJ1cXMku74ztrOv+QRRSmyx2AaINCRbiUfCSSzmHDa6dC+fGeGEdBfCt/eeyk3WTu9ADr/0e1Y0tV0biTPe1k9Fe8/DdbhO3q5kjOY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768535449; c=relaxed/simple; bh=C8w12dJVUxW9Z8sKXrPFoxswnDG3WRw4VXyaktYwfTU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SxGUTtI0lcvptst9WlyRwGrKFIq62MbTYfnta/NO9Q3RNCCTJ102qDlPPqJLYkHR/vroO6S4/Ip0JJ4VcwNB+3c8OskL01yBNZKksllReiwO11jDQTfcxLo9QEga4qkLLBRlfgWmGL1HYRE19ILApvuXvsqpaRcLdfTaNRC+f0w= 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=fynlNjnH; arc=none smtp.client-ip=209.85.210.196 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="fynlNjnH" Received: by mail-pf1-f196.google.com with SMTP id d2e1a72fcca58-81f47610542so820971b3a.0 for ; Thu, 15 Jan 2026 19:50:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768535447; x=1769140247; 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=WmVc6d5RbXlucbiy6rXoophl60FqhGiD4vLZlhVfwjA=; b=fynlNjnHS+2xu3waUXG7hat7PW4BSDxWfdEyTznTSVQVEXFXFVixsQWrUf18N4wuTg Gdyup/M2TVFA9DN6Ww1W7MXL5uC+Z4Sf4HJDeApCfaoKdjtujbeLxjWDEvTsP7I1RJtR abDW5g2TiqtXxALazhHebrCZ1ps1a0IOmFp5CMpdUrIz72ZVtecmiofkbyDHfY2x8M0t bViyexOjQ0NMiG8RBUahY2iVGNbUtyX/3+L275cfrzqSEeETIwSaFr85X6XpMUZeUyCs 2yFfXWXYKltfJxlfjRvmqmGQ8cxb8bAgEXv0GzmVfiYGf2o0TbdPb8SpNBJuekWgx7Ip UfIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768535447; x=1769140247; 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=WmVc6d5RbXlucbiy6rXoophl60FqhGiD4vLZlhVfwjA=; b=c1ek+YnqVDYsk0W71D0atmM0lAKHl/7SWNBLf2OgU7kI7513MaWot1pDW0OkKvVQyf XgORSScBpJ8NGoP3np+dT09s78CK/2QeKdZ5MSXjqz2zvZXfw/x8IUiML0vozPHmKhxv NH6ahQ1I2mPBBocmg98u5yvRj7p2gOvi/Sf3EgKY6CTdzezkfuh6oH/uyVsnUe0K0Cf+ RpsyERhayquVmHIXD18kceRJUHGQfNp8p26UrZWrso6EGSar8++5thA2Mv+iXtCQElWq WisM3UfCTQzCqcEoHH6JVdFcWtJ+Brn8Zby6ERgdFZLjlwp7xxq418O/NvVwa5WPqpYG eHyw== X-Forwarded-Encrypted: i=1; AJvYcCVYJl0PLu4YaVgKw0BsMHuTpzvx6mJID2mPATJSKYjbUvIq3+liR+t0c+RlQFMF8BSy7qcnbMNHTHanjbo=@vger.kernel.org X-Gm-Message-State: AOJu0YxQAuw88KFyob7ZJjV6Rmwy8uv2PmGe8jzag3J+KXQF75XEcHOd E6sr/7aO/SiYhCzcxdXMiw/a+p0UXH+r5C62RCLpYs6uQeCOQ7x25A+U X-Gm-Gg: AY/fxX57VFyDbYk5gIuXyRjDnLoMxpytWqyp0tUQVBUQAeWkFrBe18PJLUbo5mvogGX t/0mLodQAzD5MroHFraYK1PQXLPJKEuPByXJdNnVm006mQUxT0IXFGHuvkwudnaREcRLfBwEjvi 8hhUoYswHa7hZ9m4ZjG/MGQ2N0olYa/0ScP2G3ubnZEpNXuLaNeUVxyxdmHc8/PEGmIMVFmj4WF KNWq9urGFeTU+ZvAKyv5jG/5qRTRRl8BBigRQkMk9hkSNTqWD71s4fHCrjniF9DoXqwEgqeTT5Y tE/Iavy+dxmCfEbkyMn5pP/ax8DnQICFG92N8hkmrQ1oK9Kti22ck7B+vFXFbYSiSX3a8kOBmcj YmtCjLaOZd1y3p++wTf2a1vUGZvEbj2Iyd5NR8CcXd6kjm9xEomdm7ZRUm71UT4K416G5mpaMze YMXOPicWo= X-Received: by 2002:a05:6a20:939b:b0:38d:eeb9:8f4c with SMTP id adf61e73a8af0-38dfe7feef2mr1768372637.71.1768535447549; Thu, 15 Jan 2026 19:50:47 -0800 (PST) Received: from 7940hx ([160.187.0.149]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c5edf37c9d7sm684504a12.35.2026.01.15.19.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:50:47 -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 2/2] selftests/bpf: test bpf_get_func_arg() for tp_btf Date: Fri, 16 Jan 2026 11:50:24 +0800 Message-ID: <20260116035024.98214-3-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260116035024.98214-1-dongml2@chinatelecom.cn> References: <20260116035024.98214-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 | 1 + .../selftests/bpf/progs/get_func_args_test.c | 44 +++++++++++++++++++ .../bpf/test_kmods/bpf_testmod-events.h | 10 +++++ .../selftests/bpf/test_kmods/bpf_testmod.c | 4 ++ 4 files changed, 59 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..848fab952719 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,6 +33,7 @@ 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"); 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..5b7233afef05 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,47 @@ 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); + + /* 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