From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mta0.migadu.com (out-240.mta0.migadu.com [91.218.175.240]) (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 90A1535839E for ; Sat, 17 Oct 2026 14:27:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.240 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792247245; cv=none; b=ck3uD9k1ewaFhGsOQVfDVX+YsUrYhG3MFzSBdhCC5J5ox/Lwxad5mHh3Cc9tMDTrWJ+XhCqdu0GFLY89hYXcBB8a6orNDmmgxBZItxYximTCYFWd+1RplKfM09fOUJ8182VMdRH0OMiJ2VOYogUHpw81rkKJkElIUqp8TRZry4Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792247245; c=relaxed/simple; bh=r9DwJIMZt8b/ezhbO7xOMt32dEvRvA090yBJ89Hz23Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XlIrG+BgrHlZegxnD5doPy4xPu/Jts0dTrLhs4247+t9wtmk6U/Z9jhmh7qYfVyFJiXyIYkFEcbG8uM9Pu44Mrg3TiiDB6KCL30S5OKb2Xp3tvO5dJNqEsL1vO+4cTQCIZ5o7Ko2+vTvF+BUZcTNNfI4c/qhmKZ8E7jCqUjb63k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=QBYUNIYj; arc=none smtp.client-ip=91.218.175.240 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) header.d=linux.dev header.i=@linux.dev header.b="QBYUNIYj" X-Envelope-To: netdev@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=r9DwJIMZt8b/ezhbO7xOMt32dEvRvA090yBJ89Hz23Y=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1792247236; v=1; x=1792852036; b=QBYUNIYjZZCZP1AQiKJ53YJ0jtrv6zMH4tzVFCVhUNQUFEXYEt/kzcmhagO4PzDqxNnNpG4F pRAWr2321bc8RKV+k56FDk4jvx7FCvM+qEoqkaqN2K0gbfJQUO7IqtHMvrbcAWCZ8Cc3uw4RoVY rY50uy7Hk2Ue/iSFzIZ7oi+A= X-Envelope-To: netdev@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id ef9ff57dc45b049a; Sat, 17 Oct 2026 14:27:15 +0000 X-Mizu-Trace-ID: ef9ff57dc45b049a X-Migadu-Flow: FLOW_OUT From: Leon Hwang To: bpf@vger.kernel.org Cc: Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Emil Tsalapatis , Ihor Solodrai , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Shuah Khan , Kuniyuki Iwashima , Hangbin Liu , Martin Karsten , Masashi Honma , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Leon Hwang Subject: [PATCH bpf-next 1/6] bpf: Add syscall common attrs support for link_create Date: Sat, 17 Oct 2026 22:26:44 +0800 Message-ID: <20261017142649.51047-2-leon.hwang@linux.dev> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20261017142649.51047-1-leon.hwang@linux.dev> References: <20261017142649.51047-1-leon.hwang@linux.dev> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Similar to the syscall common attrs support for map_create [1], add the syscall common attrs support for link_create. Create and finalize the internal verifier log instance. Then, report the error messages for invalid prog fd and invalid attach type. Links: [1] https://lore.kernel.org/bpf/20260514004634.3DA09C19425@smtp.kernel.org/ Signed-off-by: Leon Hwang --- kernel/bpf/syscall.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 0f27604a54aa..252b479937a4 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -5839,10 +5839,13 @@ static int bpf_map_do_batch(const union bpf_attr *attr, } #define BPF_LINK_CREATE_LAST_FIELD link_create.uprobe_multi.path_fd -static int link_create(union bpf_attr *attr, bpfptr_t uattr) +static int link_create(union bpf_attr *attr, bpfptr_t uattr, struct bpf_common_attr *attr_common, + bpfptr_t uattr_common, u32 size_common) { + struct bpf_verifier_log *log; + struct bpf_log_attr attr_log; struct bpf_prog *prog; - int ret; + int ret, err; if (CHECK_ATTR(BPF_LINK_CREATE)) return -EINVAL; @@ -5850,14 +5853,24 @@ static int link_create(union bpf_attr *attr, bpfptr_t uattr) if (attr->link_create.attach_type == BPF_STRUCT_OPS) return bpf_struct_ops_link_create(attr); + log = bpf_log_attr_create_vlog(&attr_log, attr_common, uattr_common, size_common); + if (IS_ERR(log)) + return PTR_ERR(log); + prog = bpf_prog_get(attr->link_create.prog_fd); - if (IS_ERR(prog)) - return PTR_ERR(prog); + if (IS_ERR(prog)) { + bpf_log(log, "Invalid prog_fd.\n"); + ret = PTR_ERR(prog); + prog = NULL; + goto out; + } ret = bpf_prog_attach_check_attach_type(prog, attr->link_create.attach_type); - if (ret) + if (ret) { + bpf_log(log, "Invalid attach_type.\n"); goto out; + } switch (prog->type) { case BPF_PROG_TYPE_CGROUP_SKB: @@ -5940,7 +5953,14 @@ static int link_create(union bpf_attr *attr, bpfptr_t uattr) } out: - if (ret < 0) + /* preserve original error even if log finalization is successful */ + err = bpf_log_attr_finalize(&attr_log, log); + if (err) + ret = err; + + kfree(log); + + if (ret < 0 && prog) bpf_prog_put(prog); return ret; } @@ -6513,7 +6533,7 @@ static int __sys_bpf(enum bpf_cmd cmd, bpfptr_t uattr, unsigned int size, err = bpf_map_do_batch(&attr, uattr.user, BPF_MAP_DELETE_BATCH); break; case BPF_LINK_CREATE: - err = link_create(&attr, uattr); + err = link_create(&attr, uattr, &attr_common, uattr_common, size_common); break; case BPF_LINK_UPDATE: err = link_update(&attr); -- 2.55.0