From nobody Mon Feb 9 07:22:01 2026 Received: from mail-qv1-f98.google.com (mail-qv1-f98.google.com [209.85.219.98]) (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 B71C026529A for ; Wed, 31 Dec 2025 17:37:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767202645; cv=none; b=YDOfhDInSbYJsCLvSdfoxfhJjcLoQHqzEtiYIg5DSTk7pzWddrfYfguo239q8sH68m3AKdkHnxhn59p9CWCGEXvcnS/4PqUXM3pwW72OaDjHBXwt9TU+jyow1inmCS50MLi/UYV56pJjch7ARd/nIKIpNYJYTi6O1hHAJMN/jCM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767202645; c=relaxed/simple; bh=7sztx2cWvWIz9TKeoZ7WJJeq8MyUlFzC//jJbHulVpU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Mfgrwm1/XdXFX8VDvHTY+NOvAqNLtHDHj0W/Tiec1SloxZ754KIyEu8xFyEYpzTeq2FBDg0HTYxohKV4LgCBBQtBYeq7UDCCq/+8h7mTra5tNCPCEco0qfcl8zO7uvDH6YHOO+E/O2vhHUcEjG3KSTdWanhl1Q7rQdoe/eyJZoo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=P2mJbFiI; arc=none smtp.client-ip=209.85.219.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="P2mJbFiI" Received: by mail-qv1-f98.google.com with SMTP id 6a1803df08f44-88a390056e1so4183206d6.0 for ; Wed, 31 Dec 2025 09:37:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1767202643; x=1767807443; 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=f/dTXIrnjBfrtWAAe53M4yTIg6PHJwwBbAiaJAY560g=; b=P2mJbFiIjxyvdqq/JX2llGW/WJojGB4kayCihusbAmL/yNlDIjsOKRLWjRyPWI3DLQ 2CtA7ap8gGYXNq84Y6oj9Mu6UZcTaq+e5TMThl8Xb14mvo+olG8oZ516c19DahmPmXd2 HdRU/B3SF2w8HaiHu8sFSN4Emg8DGyxDx28yRrZY6tRBPMshz+mgTha/6tpLs/DGoFD4 8/kh/QbLbSbe0bKmG2pkNdWssaIwZ8MMMM/OQDrVjy0sw/eSHReM/UvSf/POjb18OOnG xdGuC9qHSgN+Y/8no06Ff/Q17rMSad4HBKIVUdAralaCrnDcWBheu4icsbsd4lR2Oxc5 C0SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767202643; x=1767807443; 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=f/dTXIrnjBfrtWAAe53M4yTIg6PHJwwBbAiaJAY560g=; b=NKxbdVOuWPNs2gjwMOayL7wMVEPUczV7qX3aqtczSM43LwG/I6ujHYPbHqOGrl+rER 2nqV4HU08dBNmJ07V69syHhfM5y0QqlU9s+5clt0PtAM+DP2bHj4YmHpxRp1fhDPR3YN iCHCAX/+9BPrpse7nawBEKQ10cZxLVh8BswKR/32W8kQLMxTWifqJFbGYU6l0LnPJCbZ 3SFAt4Gi/dRcYCwkG1u7Bfyq4KOhjA3heLc1W1cCxG8IT+Y0jIUAI9juiKF4c86nLxV/ ruvsOCl/Jvuc2D8Yj9AbQ0BRuJ6EfCtl2wznLsqPEmem9fCqEAXcHrAuzUYnygOmDUCt xvAw== X-Forwarded-Encrypted: i=1; AJvYcCV6eyZSe/Dyzauuub+YpI8byF3t55KwV2fE76B3PjbsK/ihHnjp+aoiwGHiXSQvHD6FhEGC+6316N7Hetc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywfu6V1E8/sLomkkXCAgtsHR1vpQqapR7l1gaCgS/sfk9seZ+Jp jtjlfTImjWeQw5ZbP0PxAxst6qCAhadWVnFwjeVW5TDLACekrNAlp2iNH0MDNCyGtXRCkVUqOuF 8oPoSh7t4QghX+XisbHCmAxQtysXUXl0xK59Pfw2QleiHCor/yiai X-Gm-Gg: AY/fxX6eM1APV+jx/xLK0oaJOluRiTHuVRhUXWVQcmiHOjwymrwrAyrcgNXADpw9Yti 6bUwwh4raEegwJfyTbB2XCNa0RMzKJMPdraQiOguQCEoFmumYq6PzP6cQoDMHr7msBytZDLN0MW U4cvt0U3XLZQY1Qgrli51S0uS1XUERUDAZmc2ubjELxy7i1Y66IirCrk3pDLXosZQkVygP5ZWZs kbgsk0Ggwee6KUTwLFoBHPIBsVzcBZgSZ3FYqvuPwXG2KEPzJMt5qxSgrdOy0zmCqJQh+NeA6Yc nWPYM5uA5g3KNUP+OolnfkeaLOZGo/IQMIj73ejBjsx+tAPKGViVq8i2LV7zvI3JmOn9FJI4o39 CNte0l3EbpO+n9PM2+1zu3sOsR0I= X-Google-Smtp-Source: AGHT+IEwtYVxzJM5e94yPY3BVIRxsLzn9rKk7vTIuxyQqU0ow24Nub5lypi+z+bUWbmSnwSzc3qVcPo88ZOY X-Received: by 2002:a05:6214:1c05:b0:880:6fa4:f55c with SMTP id 6a1803df08f44-88d8404da77mr466260576d6.6.1767202642560; Wed, 31 Dec 2025 09:37:22 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-88d97a82a66sm46301936d6.16.2025.12.31.09.37.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Dec 2025 09:37:22 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.49.34.222]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 79CB9340681; Wed, 31 Dec 2025 10:37:21 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 71A47E4234A; Wed, 31 Dec 2025 10:37:21 -0700 (MST) From: Caleb Sander Mateos To: Jiri Kosina , Benjamin Tissoires , Alexei Starovoitov , Daniel Borkmann , John Fastabend , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Jamal Hadi Salim , Cong Wang , Jiri Pirko , "D. Wythe" , Dust Li , Sidraya Jayagond , Wenjia Zhang , Mahanta Jambigi , Tony Lu , Wen Gu , Shuah Khan , Maxime Coquelin , Alexandre Torgue Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, netdev@vger.kernel.org, sched-ext@lists.linux.dev, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, Caleb Sander Mateos Subject: [PATCH 1/5] bpf: use const pointer for struct_ops cfi_stubs Date: Wed, 31 Dec 2025 10:36:29 -0700 Message-ID: <20251231173633.3981832-2-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251231173633.3981832-1-csander@purestorage.com> References: <20251231173633.3981832-1-csander@purestorage.com> 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" struct bpf_struct_ops's cfi_stubs field is used as a readonly pointer but has type void *. Change its type to void const * to allow it to point to readonly global memory. Change the void ** casts of cfi_stubs to void * const * accordingly. Signed-off-by: Caleb Sander Mateos --- include/linux/bpf.h | 2 +- kernel/bpf/bpf_struct_ops.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 4e7d72dfbcd4..d74189ea1066 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -1977,11 +1977,11 @@ struct bpf_struct_ops { void *kdata, const void *udata); int (*reg)(void *kdata, struct bpf_link *link); void (*unreg)(void *kdata, struct bpf_link *link); int (*update)(void *kdata, void *old_kdata, struct bpf_link *link); int (*validate)(void *kdata); - void *cfi_stubs; + void const *cfi_stubs; struct module *owner; const char *name; struct btf_func_model func_models[BPF_STRUCT_OPS_MAX_NR_MEMBERS]; }; =20 diff --git a/kernel/bpf/bpf_struct_ops.c b/kernel/bpf/bpf_struct_ops.c index c43346cb3d76..42cfc3e0bc68 100644 --- a/kernel/bpf/bpf_struct_ops.c +++ b/kernel/bpf/bpf_struct_ops.c @@ -321,11 +321,11 @@ static bool is_module_member(const struct btf *btf, u= 32 id) return !strcmp(btf_name_by_offset(btf, t->name_off), "module"); } =20 int bpf_struct_ops_supported(const struct bpf_struct_ops *st_ops, u32 moff) { - void *func_ptr =3D *(void **)(st_ops->cfi_stubs + moff); + void *func_ptr =3D *(void * const *)(st_ops->cfi_stubs + moff); =20 return func_ptr ? 0 : -ENOTSUPP; } =20 int bpf_struct_ops_desc_init(struct bpf_struct_ops_desc *st_ops_desc, @@ -444,11 +444,11 @@ int bpf_struct_ops_desc_init(struct bpf_struct_ops_de= sc *st_ops_desc, mname, st_ops->name); err =3D -EINVAL; goto errout; } =20 - stub_func_addr =3D *(void **)(st_ops->cfi_stubs + moff); + stub_func_addr =3D *(void * const *)(st_ops->cfi_stubs + moff); err =3D prepare_arg_info(btf, st_ops->name, mname, func_proto, stub_func_addr, arg_info + i); if (err) goto errout; @@ -833,11 +833,11 @@ static long bpf_struct_ops_map_update_elem(struct bpf= _map *map, void *key, *pksym++ =3D ksym; =20 trampoline_start =3D image_off; err =3D bpf_struct_ops_prepare_trampoline(tlinks, link, &st_ops->func_models[i], - *(void **)(st_ops->cfi_stubs + moff), + *(void * const *)(st_ops->cfi_stubs + moff), &image, &image_off, st_map->image_pages_cnt < MAX_TRAMP_IMAGE_PAGES); if (err) goto reset_unlock; =20 --=20 2.45.2