From nobody Sat Feb 7 08:27:22 2026 Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.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 824653D4111 for ; Wed, 21 Jan 2026 04:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.196 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768970649; cv=none; b=YL2zE4WUs3gDyYHttKeZwlJug3bJDQD7j7y7eLQ6AlhUt/TKuGwT0g8E184pNOcK9pY+dgHy5Hkn81HnvH5PEb7rIiRLZe2FgUldwJFyL0LKYeVR5easLO4HgFPvCXfgBUGV9qC4FLuhcMbBNYf0SSkX5mVQDoTDnNZSa3WJ0DE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768970649; c=relaxed/simple; bh=/tEYBlRULVvkLeB76xmCUAWDFSQE4AoadZrfuKWXOFE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BlJ7lZqrOqKPkbiXA85eAO8hA9y0iQlA47fQUpo1qK202BSHNuLxObFVmkPCGdZet2hOaAjJBjRLfp334mVCzhYp329ftZ5g3I+rZWW2X6F2k3MvCwH93LTBXZnZlBpCUo8YNndECzHwc1rDESH1bbZuFgKIq4CJrdl+hNsoS8s= 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=UFA5A9aX; arc=none smtp.client-ip=209.85.214.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="UFA5A9aX" Received: by mail-pl1-f196.google.com with SMTP id d9443c01a7336-2a7a9b8ed69so1483955ad.2 for ; Tue, 20 Jan 2026 20:44:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768970647; x=1769575447; 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=x61tdpYrSBGuJhFRwERbZzIz3z8AUYfOzinRogdRAfQ=; b=UFA5A9aXqKtO2WV9vrlHC9a9xV21odJLaV+eoGBv8P/eebZ/skMsrs0CawG1Qqpk36 qSmTFP3ZHNMUj4nucUtRT5wB1IAgyRMi4esooz1wZxQpKPNINac21/VcnsFn45i+FX7m dQCro40v/0X4TOM+RMzFHEVXF8X25816i4IsgorelWYrjm8r+/ZQNsYlOtFN2NOOstZ2 /z/1C7c5vRdUOMkJkeuMdPA8eU8Q2XfYXriSCKSJvavyGj3B5pqrYvsqs3cwiDGrOq/m I5qyP/cMYEDMQoff/0PurAaREza+34dc6x0jVY2yQ+zEfHoS+9ip+NRry7YWPu62svtq u1ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768970647; x=1769575447; 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=x61tdpYrSBGuJhFRwERbZzIz3z8AUYfOzinRogdRAfQ=; b=f0+/fi1p3QbzsH8zkH0cVgsilr3xXKA5nQy9dq4m8FTsrZxzwDUokqWw46Dt5PECNM AKzzV/EuAp9eC9+WrjkPAKtdxjg3jZ2CKSK8Z1cWmccxvaP/0ME3sP0yJbEEi5EyoO1B bazyKCAOmKMIzkfOwLhr8pOQaT+oI3ECJOMBzBjIRNASq2/DeitKJnyZ+LBRX6cmu4Cv RYsfOHAEPYXeQA8VpzatQ1nxtYpzlGGxGrujYN1a7Sqc8dcF09llPfBdeCJL0TdFUMFY 9gpzYwhJs7IEYlXZqDEb5pGhC/bBWy+ApVFojPTCJpjgOO1flOB6CbHAy19YPSZ+gcM7 OyeA== X-Forwarded-Encrypted: i=1; AJvYcCUWOrmgfPL14SuhbLWOZp3NOjg9VsCM0pvPJaFaYmjqZ2FJqMHjkpdkgW9GKW4VqrikCoFzmuQNIjrWZ4E=@vger.kernel.org X-Gm-Message-State: AOJu0YxRfc4xmzIN2Ocf0V1qQ+QKh9IBAFN7igusDO5yRHIa0+xzTbLX vQqmeFAmGXH/Fnroe1Vy3SG4/KiCEvc03/ubN4+w17qDVPmXqU4UvdbH X-Gm-Gg: AZuq6aLFjZQJw+Ys9pWv5CnJxzMGZb/gj2SLbcogdTnI+roDx48V2T6n0WJvp50FcaB dtDm7UZWHIR79Hjyry5eFG8civr9hhb/kINb2kxwijp53KHEWzWTPjkN+fd+FTrSeyXUz2S9NbG z/xuL4ZRiUKcerN31TZmco8q6r+quNNOHa6AMZsKt2ML++VY2tWjpzE3nZ7yKaA73OXEysCpE1p aVbkwwcC2kloEymsGagRS0nSlYfNQJ2YJ8jvvKCrX1dktDEZ6wXqeREqaikWZHbtKQp/hBp3STe DcRIFbS07HFTlfpWntTtbfXUwZ0+yFzTuB72k2M5Sc/G2blfGxSQQ5nKjmfU50Ix3w4n1jez1RB W6IWEkGujvfE8O8fk1TpdNUc+2ZThCeRwU6hnH7DrCKi49ym5TdHW52OZ6V7TS7fHX6o0s6BNKk G6sTNBAlAd X-Received: by 2002:a17:902:f54f:b0:2a0:8be7:e3db with SMTP id d9443c01a7336-2a768d75158mr36337295ad.15.1768970646715; Tue, 20 Jan 2026 20:44:06 -0800 (PST) Received: from 7940hx ([103.173.155.241]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7193dedacsm139754815ad.58.2026.01.20.20.44.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 20:44:06 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: ast@kernel.org, andrii@kernel.org, yonghong.song@linux.dev Cc: daniel@iogearbox.net, john.fastabend@gmail.com, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, 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 v5 1/2] bpf: support bpf_get_func_arg() for BPF_TRACE_RAW_TP Date: Wed, 21 Jan 2026 12:43:47 +0800 Message-ID: <20260121044348.113201-2-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260121044348.113201-1-dongml2@chinatelecom.cn> References: <20260121044348.113201-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 Acked-by: Yonghong Song Acked-by: Andrii Nakryiko --- v5: - some format adjustment v4: - fix the error of using bpf_get_func_arg() for BPF_TRACE_ITER v3: - remove unnecessary NULL checking for prog->aux->attach_func_proto v2: - for nr_args, skip first 'void *__data' argument in btf_trace_##name typedef --- kernel/bpf/verifier.c | 22 ++++++++++++++++++---- kernel/trace/bpf_trace.c | 10 ++++++++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 9de0ec0c3ed9..c3f8870ac5dc 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -23323,8 +23323,15 @@ 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 =3D btf_type_vlen(prog->aux->attach_func_proto); + + /* skip 'void *__data' in btf_trace_##name() and save to reg0 */ + insn_buf[0] =3D BPF_MOV64_IMM(BPF_REG_0, nr_args - 1); + } 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); @@ -23376,8 +23383,15 @@ 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 =3D btf_type_vlen(prog->aux->attach_func_proto); + + /* skip 'void *__data' in btf_trace_##name() and save to reg0 */ + insn_buf[0] =3D BPF_MOV64_IMM(BPF_REG_0, nr_args - 1); + } 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 f73e08c223b5..73c8f92c5d65 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -1734,11 +1734,17 @@ 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; + if (bpf_prog_has_trampoline(prog) || + prog->expected_attach_type =3D=3D BPF_TRACE_RAW_TP) + return &bpf_get_func_arg_proto; + return NULL; 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; + if (bpf_prog_has_trampoline(prog) || + prog->expected_attach_type =3D=3D BPF_TRACE_RAW_TP) + return &bpf_get_func_arg_cnt_proto; + return NULL; 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 Sat Feb 7 08:27:22 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 D4B553D2FF2 for ; Wed, 21 Jan 2026 04:44:13 +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=1768970656; cv=none; b=dzjfMHwbxUAOgatC/iFbGiEssPvulJDPN7yXjX5Dom+a/pcymvFKdO6wQs0tBTuOikf1G33PyRi7Dhr58XyJUNV7Q600lkKwFe6SME86dcDFOn11Qi/zwOvGeYl3PUrfv1fbef2hBh/3lfdFZFENQ63xi1owogYXd5yRJD9ivcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768970656; c=relaxed/simple; bh=UfYDPQ2tt5i71JPKk8CRqW3s2Ee+lt+6xD8TDc9dg4M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EK8RzlZ73v0yQQElHy8yCgXy/zFiI7VIkyRUw2ZK96Nzd3gN/8IdSr4k5fhKV2d4TuUaVUJWiD3vRKkHpGLOjtXnUZkp6wZbpZSWrl6SPFpEXBd3jTiWxvIZgiJb0BXHp0wJCtPuZS44b3+iLAQrCzADby+/DRH7svG/s6MjlBc= 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=dMyPL7C/; 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="dMyPL7C/" Received: by mail-pl1-f193.google.com with SMTP id d9443c01a7336-2a7a9b8ed69so1484585ad.2 for ; Tue, 20 Jan 2026 20:44:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768970653; x=1769575453; 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=7UsM01zHjyrzsQENBFnIHRhI5E1hZndtJZVUReoZ1o0=; b=dMyPL7C/SnBwDGK8QJeGOsTaNTxKNUDc6AOJSCjp/oo7hQBowcxwd3a9mHCB6RPUfh GawXok6UbDJ4pcpwtZazTfstqR/nwL3bRNLRBbIlS587dQyIn1oWDhyoO6joAu/+c/oo IjjpID2g/UMl26Rcet4ZJxoR5xF2mwjNPYOlIKTygdEeWdDkygEdHun8w+V6j4DPnGI/ obJ202gxf6JSmDI/h1oZVhB0CrugZMUdNVoITbW6/9pUpaPDgLngBsHPJcebyf/0Zgf0 ALzbARls9JA37Z2iA9uXq6YhJO21TN2EsvpewtCuzlPGVpir9J6qDudSZmbvY8oMR8nR WzLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768970653; x=1769575453; 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=7UsM01zHjyrzsQENBFnIHRhI5E1hZndtJZVUReoZ1o0=; b=RpCltxvzGr0DZNDNz8XmVegdnku0Dpi0kkIgzJiNwBK4Y+tAdx1y692Ux5wDyJbV6I TWSYJki4OKAFedWmLKTXfU7k5SR8EVt8l1LiaETyeWAKoPXF0gMsI90mwa7aLZUkwGl+ 3Yx5guQ++h8vdWuvyPhHNMFKuP6Y900CX9FHpLQbcs4QW1TYONBWHOX+eukCc0uIG6Uz LcAZ/3FEtN8IJkJFjGS/qPfhWo11lAn+JlFI2M9TmC3Wlr40fiFINWSYEYPy/LgceBvg qqDy5tfrhaEJNx+peVZsR3okWxH47TRbqIIYU1VYv3cRL6SVClhmcDpm1WJjcWaZRJXX kBjw== X-Forwarded-Encrypted: i=1; AJvYcCUwV0sybwpeqO8lpYL5ode5Gxaet9Tt8AKNwdfBHbf1bwropUvIrq0FXOraWfz2w+Y0J6ZtZ7q3uq01jNk=@vger.kernel.org X-Gm-Message-State: AOJu0Yzz/QTOFNxdFPAC+C6PCr3gpSTCnVIBzf+ucP0UTFFp7pSI6Cbi N4sZz7VEuVwaBXlchos1k30HeiRhJX9qHAbdBcOwJE9eZZG5LhoSHf9+ X-Gm-Gg: AZuq6aIt4A1Rg3nXxuMhSU1WO96tbsQ2rCGxcnPsrdS5uWDQdv39bBsRSlZuXfBdTM1 uWd0GN/MJOuRBRYs3KrzgYYN1FYXleMH2B+tnbSDq+wd8q36RhDOa1oUt8v13MbkJJVddM8dlos RdmyqGAFuCXIX6u9eRjGXPd8QXIhKCxP3KHsCGlwUQMPZ0DPd/nwjJFzqa2NVSvMgBjRJkMDpxK AmS8NzSNp1RuFedJ30T0ChTp7UCN7zQtGvgIvk6BNNqFKpFqwt2bH4YQg7JrTW4n5g+L1B20+XC 68QfGkDufHe1aRpT2TMfbKsbOzaDH1fLN1o3jdKVAiil5kKMSlLi5/k3BRYwRZiLvfxf4D+4czy ToyS0Wskup7GKEkBZzYSsL1x8QqqPCPHZokiSxY6BS7pri+Rd3u1XqIa6XCjB3jnkjsV/+joMpW ofHpMCYS7whefTN/9+1zE= X-Received: by 2002:a17:902:fc85:b0:2a1:deb:c46c with SMTP id d9443c01a7336-2a76b055c47mr40973005ad.44.1768970652999; Tue, 20 Jan 2026 20:44:12 -0800 (PST) Received: from 7940hx ([103.173.155.241]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7193dedacsm139754815ad.58.2026.01.20.20.44.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 20:44:12 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: ast@kernel.org, andrii@kernel.org, yonghong.song@linux.dev Cc: daniel@iogearbox.net, john.fastabend@gmail.com, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, 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 v5 2/2] selftests/bpf: test bpf_get_func_arg() for tp_btf Date: Wed, 21 Jan 2026 12:43:48 +0800 Message-ID: <20260121044348.113201-3-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260121044348.113201-1-dongml2@chinatelecom.cn> References: <20260121044348.113201-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 Acked-by: Yonghong Song --- .../bpf/prog_tests/get_func_args_test.c | 3 ++ .../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, 61 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..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