From nobody Sun Feb 8 02:56:23 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 57C0A3A7DF1 for ; Tue, 20 Jan 2026 07:31:07 +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=1768894271; cv=none; b=dq+nBGD6UzYyKnWDV7bChF1OVI9z2rhMHKHuW4/RHOlfBwSZfO4A/I0MUXM2/2SoU3wRyNyDsfZPjrKZR9iDGP21fJza57CNVg1m0CGOLCi4y2+SoIFNUsNxsEbdzsqX2zQKMGq2E7bj2Rd2sC8479Q/S1ade+1mHebm8zdkTQo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768894271; c=relaxed/simple; bh=ymRYVJhzeWdJ4sQTO/2s3yQRHdQfXonPvc7Kh15OU7o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZYxxt3NBGsKa0F0gX8jhEc4HN4gptDTjUCcjuI9nM+uh99z6wMSbjsUlWXffEjavA6yBf1/fC3RT+z+oTpcVdt4sa3CNcRmZbpXxKivifYZFok0oIgBBj6BW3uus9JzNHXEt9oNgSt3dqgF6pP+btcp9+tYd8IoLgOhD7r1MNtY= 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=d/EiCrKw; 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="d/EiCrKw" Received: by mail-pf1-f196.google.com with SMTP id d2e1a72fcca58-81e821c3d4eso4173519b3a.3 for ; Mon, 19 Jan 2026 23:31:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768894267; x=1769499067; 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=7NLuN810LB84TxNhioCDEyB0yA1LlvJHeD3a2KMbZiY=; b=d/EiCrKwRVZ9rmnG9hCsEgyEwTB76Z++RrCYiCiLVJG3kOI5LdMOwadnOu+XPo2tes aH+hRD65esvwgSyHeOAaaxY8XH8CsmFpiHKia+u6t41g7rE7nhiyZbNdyXiRPoTepaeO 1elVQHHrhR/Dn5tHp23NKo317dJDroPAfRYQs56fZYh7EiibKMDmcS+y3VmldOsaw54U s+va71QPJewTbHvOFaCxYXNMjy2ZVOgigFMfZj0OIPUvwgOggLSIDakRFIoXxOn85+kh 2CwNp4aZltegmCJtZsPoV7kh3BHvfovK96QX2HWCpeLdmaWGl0xfptXkC4PJt+0+Tn22 UimQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768894267; x=1769499067; 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=7NLuN810LB84TxNhioCDEyB0yA1LlvJHeD3a2KMbZiY=; b=T/Cg7XTTejhzr/G6ScpvFTV8yRb5TTtNhIR5HIKoSr1wwSMqYp+Hlt/+oLoazJIpTB tXUJHymiLuETnkJYLGSAAf3uMrRo6NJ+qKLcmimyulfztgNrmdGfs/t1XkULjbIxrv4C uV1z6hqOTPlEmrpqEJ8YLikiaLBBXBfqRj6N6nkfMVGjQ7XyCQHhwLO5eo3zWZQF+IB1 4I7yODU22R8lzRZrj+VrzmOhTmTW8CT3PHpgLV2vzBs21GX2U/NmM8B0/DlpO50PcfbT qoKBZdr7f3xKW9qGXHn8jaS6eh8wnVQZQWkOZy2MWqRxuSroTmZcP7gWg7dPhXKGw79h QQfw== X-Forwarded-Encrypted: i=1; AJvYcCV476mYqzVyBymV+SI93FN51Lkgd8gYIIQVb0coejwzwpuoMCPgaJdwCZRqKCqNpk+oy3FchSVTFZy8gRQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy78feCHwfD+l9tA88XD8bHQ/qY305Qug07o2rf7K1PVxt8QCo8 ICOHSXB20d4KEWDmVnKu0jAv3dobBqnL3phv9nieQG+Wy9Nq06NIC47Q X-Gm-Gg: AY/fxX7e9hO6N5bvVVgk3g5b8LsPWQxBXuO0cHRDHfxodxHdhY6wzeVfOI6QPPtNbS5 cmFm3KooLufYSOWVpJScUn6Qp/x63DWmqWjtzyzwZ9UIYG/UbumZdggGwtbsTeTrlvx77hb5MEC gmieOfFQqmOh0dif4RyxN94XfHxNuWDBRtAo3e0xhNZDNRXm4xATcKe4JMQgMWV8K1G5JAeDM0s UJmSIq3gkyAC27/W/ZJLqjS4v9ZkW+Pli2eKAG4C+fA/UboD2IOSI4apzQRoZoHg6PinqEPzXX0 NTfDyRPEOuIDOFaBtfR6QGi1cWaT6UzGPAwVtMpblt7Q9jPYMa+99DpOX+sAtZbGf8abcE/DKC9 hHK3dksNji1N6RGgeG8mZhxoZDO+Anlso6Ck1ZQDZMow5rmr7PTDnBsEFJKl8uwwQBD3PrTojM+ /xIa4draob X-Received: by 2002:a05:6a21:a8e:b0:35d:5d40:6d75 with SMTP id adf61e73a8af0-38dfe67bc7dmr12929011637.29.1768894266523; Mon, 19 Jan 2026 23:31:06 -0800 (PST) Received: from 7950hx ([103.173.155.241]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c5edf2363e5sm10822395a12.4.2026.01.19.23.30.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 23:31: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 v4 1/2] bpf: support bpf_get_func_arg() for BPF_TRACE_RAW_TP Date: Tue, 20 Jan 2026 15:30:45 +0800 Message-ID: <20260120073046.324342-2-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120073046.324342-1-dongml2@chinatelecom.cn> References: <20260120073046.324342-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: Andrii Nakryiko Acked-by: Yonghong Song --- 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 | 32 ++++++++++++++++++++++++++++---- kernel/trace/bpf_trace.c | 4 ++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 9de0ec0c3ed9..0b281b7c41eb 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -23323,8 +23323,20 @@ 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 first 'void *__data' argument in btf_trace_##name + * typedef + */ + nr_args--; + /* 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); @@ -23376,8 +23388,20 @@ 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 first 'void *__data' argument in btf_trace_##name + * typedef + */ + nr_args--; + /* 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 f73e08c223b5..0efdad3adcce 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -1734,10 +1734,14 @@ 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: + if (prog->expected_attach_type =3D=3D BPF_TRACE_RAW_TP) + return &bpf_get_func_arg_proto; return bpf_prog_has_trampoline(prog) ? &bpf_get_func_arg_proto : 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: + if (prog->expected_attach_type =3D=3D BPF_TRACE_RAW_TP) + return &bpf_get_func_arg_cnt_proto; return bpf_prog_has_trampoline(prog) ? &bpf_get_func_arg_cnt_proto : NUL= L; case BPF_FUNC_get_attach_cookie: if (prog->type =3D=3D BPF_PROG_TYPE_TRACING && --=20 2.52.0 From nobody Sun Feb 8 02:56:23 2026 Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.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 BCAB73A4F55 for ; Tue, 20 Jan 2026 07:31:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768894281; cv=none; b=PfcfafejhpvwHhaHNSIUM6pxATlTkbVMFcd86JejmRasbzhkfdMMZXSlDXOqMv7FDhwVmrr+XowNUUHymXRWSKQaMv6HXgQ/PcxfKm5u6o4kebbM+dcCnCZG88e66NCxFYD9HCYB42ze/XWUKvFEkg/1UOMTyBfEyE/6JF7KhN4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768894281; c=relaxed/simple; bh=kZiZh0VonzvzITLYzvii4c3vY29P/G7ZGQFYENdQFRI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f06ZUu13B7z/8Vd+dKS/l8o2BcX+CPUZP7jvcVoh+IyeuLgPCh4LBkCpuDa4+lXnWzJv/p73NeBueXoTQgLv7/J/D4lOPxAA6mH49o6TE3fNQlOupyO/+MZL8FiliU2HIkOUbQlcplhko/ACqWtOmidItY6ccWUWqZZm9BQ98Jg= 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=lujhPUPm; arc=none smtp.client-ip=209.85.215.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="lujhPUPm" Received: by mail-pg1-f195.google.com with SMTP id 41be03b00d2f7-c6001632e4cso47742a12.2 for ; Mon, 19 Jan 2026 23:31:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768894275; x=1769499075; 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=UxUe3zmQnPe+Di1h/wXJv+xTJZBq3RUkZe5dfyWfsD8=; b=lujhPUPmoO5KBJzWj04R73Gzom9CH9yyg2bTGrtHQoKUjI8hyKPMo38yIXAjFeZ7Dr hhyEMo+PEU7GdBYwRvgXpBbTc7T3HfifCxeh/i23JruBoTdXx/y4RpSBwOHc8h/f+A0L HJ9F16wH7Y1QuyNnCoun8dzk//Mk76qe8NIP90uFVcMMkSmxyPLP4SZLueubq2/02+dp vLd2w4NJL9BRnguImXvsafN8oMamL9Pmr5WvWMjR31r4f8mTvsOty6aHNSxEwNrtCEkm LkUXGQLZQY4w7YO7H+hNs8p5hxmNsDo29F2tfR0+WXPRhvtakb7Y9El1ptU6s5Y2qntQ BrDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768894275; x=1769499075; 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=UxUe3zmQnPe+Di1h/wXJv+xTJZBq3RUkZe5dfyWfsD8=; b=IU85rb2L9NYxnrlAkCIIhtyPmgHc/imFhEBC+CX8mOpGpCght1Yx131jeOv1lS3bb/ mYoB3LcLi9CpbJWL9O4N/x9iR0b3jKrtOmZjZli60pqbo//7MMvtMwS3rPDC9/EV9oFI DuPkUYlpVdrCRcoPTgJT3ZaAfb0iQcqXYy0sRInlh0EnzshrP4XK+MNpm4vYxZDAwTe6 4QpG8EfaOewhgFcFfeshP0DZYnGY1Ik3cxt9MCHhoPG3h0lXrO4N8mWkb3ge37fkCQz/ xUsRMqis4l8AZYe2hvyxwECg4HvJI0K1KNwRHA7bJN4ajLuhma463IJsc0Eq0la4j2wS ymGA== X-Forwarded-Encrypted: i=1; AJvYcCUi8XErDETj3YJeJge6CT/aPeM8UNLSICHcdHG0FJWs+cou8/AhhJyGuNePPSUun5tFOvHourkZP+ywie0=@vger.kernel.org X-Gm-Message-State: AOJu0YxA0Tgmr1/T7Oyi4LeK8PsxKrZU2P2JCKOv6IoTIIm8LrUr4+Dy ZGRX2YEZOYcJ8Nd/Be4h1JkXkm9JJMuyLd9F7phWOChpaxmOGvYtSAVa X-Gm-Gg: AY/fxX4UYlGXzwTZJQqCishOTWXCp47qu8RHhEclTlpwZTQFsJoY9BGsK9IHJvxQcP0 4fFEu23ROJcbkUPknY/hY8V1EZ/XY3Qo+rXSa+3WNTA4KiDld6EZPZssYRhcD6gfn4BFfWWHTpW engQgFzucxzXFLacHPMjjs4hf+qxidjNmU931WEGwyUYpM9XPv8newlqrpLtiO8LAqONnyS0zYq nDbEp7zxhjUkGTjIFVUqlJolL3a7wk/wvVk3Cm1hUxHWz3Qm+bMHmOz796okCaV1MAMUcqNJ6H6 qT6Xrg6tsV4bOJ0GlJ9PmWo/cP6zUBspwTbRfIBoz7o5eFjkFeSUgpwg1E7gGqTBDzJNgy+7mpP 1YWWnf/Uid7hEmoMn7CySHQg/wV5IaAsw8khFjUJX0jzgCQIDlhWl224cqHOcIFj8EZgxjiQ7NC C+psjQhiW5 X-Received: by 2002:a05:6a20:12c6:b0:38d:e6f8:fd8c with SMTP id adf61e73a8af0-38e00d7a500mr10849339637.67.1768894275097; Mon, 19 Jan 2026 23:31:15 -0800 (PST) Received: from 7950hx ([103.173.155.241]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c5edf2363e5sm10822395a12.4.2026.01.19.23.31.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 23:31:14 -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 v4 2/2] selftests/bpf: test bpf_get_func_arg() for tp_btf Date: Tue, 20 Jan 2026 15:30:46 +0800 Message-ID: <20260120073046.324342-3-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120073046.324342-1-dongml2@chinatelecom.cn> References: <20260120073046.324342-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