From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=91.218.175.178 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794233316; b=Kn/SKXQQqnEicAKwAesIV4fDzwFo7QAIjNp0kCuUKiPFTqpEOYSRxuy6K+bncPlg15Md YXzYqcGHXSYTAF6SxAIeIH778CeKEN5yJgTPBPFvJyT1EpMxoR2kdAYEQmNUZdBkzJa5+ pNn0twx227rp3XXsyBF9YmOMtTW/iX4gPSX+8SPRcBduMy+kmLfdg0duwxEB/vDHT6pDe Iua/6O1yUWauWy+V9X9zviJp21zqpDahoBuZNe9Qns7ZWTg8d17jkYNIzdWU0BBixyiYK /o+A2FLvPunP/ZLGTzskKbJb3kLJtT9fXfzW0UfoMJRNSb8+5BE9Qv0a/GXpZ8zob8A== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794233316; h=DMARC-Filter:X-Envelope-To:DKIM-Signature:X-Envelope-To:Received: X-Mizu-Trace-ID:X-Migadu-Flow:From:To:Cc:Subject:Date:Message-ID: X-Mailer:In-Reply-To:References:MIME-Version: Content-Transfer-Encoding; bh=4ctbnQijEDADeE+VeOyBE3qsRBaizRl+Lj+tpaXR/Lw=; b=w9D54Z/l+SI1meBRAohxUZITGGUQFeGLMtMLSF9OBLjB0Fu+vDaIdLMOfTz2xE+Oi4ja IKb0/lhss+v2r9ycyz81y/klEQDEKECLTtw56vXGLkAISIKpJPFdURiZSQssCAY4OyIjV uj/1Th4xSV1g5p9cygzBx5G206Cu5H2o/Y9BsLZU6X2cY0y5yMGLc4irs4JqZO6B/Z7aY jOZDubctMm/49R0hf55Es2OIOL883Ap1rb/2rwX1tijGtXkpiCPKNDTOq9sZe6LHqjFRP vc1UVCq1CUbgGGSfLuv371CXVp8lrG70e0hye/PdbvlCtWw2pSi4V1EqcHtcxr4ifMA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=sMOr8lus; arc=none smtp.remote-ip=91.218.175.178 Received: from mta0.migadu.com (out-178.mta0.migadu.com [91.218.175.178]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7700606A323 for ; Mon, 9 Nov 2026 14:08:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org C7700606A323 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=sMOr8lus X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=A5eN9JlEGsLm98Wb+lpZGaqPPk4WtO9xxuhn4MtM0Do=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1794233313; v=1; x=1794838113; b=sMOr8lusiYkrSJn/Svxm8BIdodVyqfyKWcZbi3C7nOLF8SboXC5NhgtrdxEaM7E6ukI4BYdV QAsiaqAJZy04cAErNqrubhUggNU3A7DfWCpJ4DAwsRxlz1T8us/d7Jwi/q3py23EBIg27T7EToy QR3uUnVfBW/YYcx0GBMBsc10= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id d9e2c428578da33f; Mon, 09 Nov 2026 14:08:32 +0000 X-Mizu-Trace-ID: d9e2c428578da33f X-Migadu-Flow: FLOW_OUT From: Leon Hwang To: bpf@vger.kernel.org Cc: Alexei Starovoitov , Daniel Borkmann , John Fastabend , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Emil Tsalapatis , Ihor Solodrai , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , KP Singh , Matt Bobrowski , Shuah Khan , Leon Hwang , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH bpf-next 1/9] bpf: Add log support for tracing link_create Date: Mon, 9 Nov 2026 22:08:08 +0800 Message-ID: <20261109140816.5196-2-leon.hwang@linux.dev> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20261109140816.5196-1-leon.hwang@linux.dev> References: <20261109140816.5196-1-leon.hwang@linux.dev> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Tracing BPF_LINK_CREATE returns an error without explaining why attachment failed. Pass the BPF_LINK_CREATE log to the tracing attach path and report invalid attach parameters. Also pass it to bpf_check_attach_target() so freplace attachment to a new target can report target-check failures. Signed-off-by: Leon Hwang --- kernel/bpf/syscall.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 9004f2673ccf..6147d386b777 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -3674,7 +3674,8 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog, int tgt_prog_fd, u32 btf_id, u64 bpf_cookie, - enum bpf_attach_type attach_type) + enum bpf_attach_type attach_type, + struct bpf_verifier_log *log) { struct bpf_link_primer link_primer; struct bpf_prog *tgt_prog = NULL; @@ -3711,6 +3712,7 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog, } if (!!tgt_prog_fd != !!btf_id) { + bpf_log(log, "tgt_prog_fd and btf_id must be both set or both unset.\n"); err = -EINVAL; goto out_put_prog; } @@ -3723,12 +3725,14 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog, * attach_tracing_prog flag is set. */ if (prog->type != BPF_PROG_TYPE_EXT) { + bpf_log(log, "tgt_prog_fd is only allowed for freplace prog.\n"); err = -EINVAL; goto out_put_prog; } tgt_prog = bpf_prog_get(tgt_prog_fd); if (IS_ERR(tgt_prog)) { + bpf_log(log, "Invalid tgt_prog_fd.\n"); err = PTR_ERR(tgt_prog); tgt_prog = NULL; goto out_put_prog; @@ -3783,11 +3787,13 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog, */ if (prog->type != BPF_PROG_TYPE_TRACING && prog->type != BPF_PROG_TYPE_LSM) { + bpf_log(log, "Only allow re-attach for tracing and lsm progs.\n"); err = -EINVAL; goto out_unlock; } /* We can allow re-attach only if we have valid attach_btf. */ if (!prog->aux->attach_btf) { + bpf_log(log, "Invalid attach_btf.\n"); err = -EINVAL; goto out_unlock; } @@ -3803,7 +3809,7 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog, */ struct bpf_attach_target_info tgt_info = {}; - err = bpf_check_attach_target(NULL, prog, tgt_prog, btf_id, + err = bpf_check_attach_target(log, prog, tgt_prog, btf_id, &tgt_info); if (err) goto out_unlock; @@ -3843,6 +3849,7 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog, */ if (prog->type == BPF_PROG_TYPE_EXT && prog->aux->kprobe_write_ctx != tgt_prog->aux->kprobe_write_ctx) { + bpf_log(log, "Invalid kprobe_write_ctx.\n"); err = -EINVAL; goto out_unlock; } @@ -4374,7 +4381,7 @@ static int bpf_raw_tp_link_attach(struct bpf_prog *prog, tp_name = prog->aux->attach_func_name; break; } - return bpf_tracing_prog_attach(prog, 0, 0, 0, attach_type); + return bpf_tracing_prog_attach(prog, 0, 0, 0, attach_type, NULL); case BPF_PROG_TYPE_RAW_TRACEPOINT: case BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE: if (strncpy_from_user(buf, user_tp_name, sizeof(buf) - 1) < 0) @@ -5907,11 +5914,13 @@ static int link_create(union bpf_attr *attr, bpfptr_t uattr, struct bpf_common_a attr->link_create.target_fd, attr->link_create.target_btf_id, attr->link_create.tracing.cookie, - attr->link_create.attach_type); + attr->link_create.attach_type, + log); break; case BPF_PROG_TYPE_LSM: case BPF_PROG_TYPE_TRACING: if (attr->link_create.attach_type != prog->expected_attach_type) { + bpf_log(log, "Invalid attach_type.\n"); ret = -EINVAL; goto out; } @@ -5929,7 +5938,8 @@ static int link_create(union bpf_attr *attr, bpfptr_t uattr, struct bpf_common_a attr->link_create.target_fd, attr->link_create.target_btf_id, attr->link_create.tracing.cookie, - attr->link_create.attach_type); + attr->link_create.attach_type, + log); break; case BPF_PROG_TYPE_FLOW_DISSECTOR: case BPF_PROG_TYPE_SK_LOOKUP: -- 2.55.0