| Message ID | 20260715175229.24672-7-linkmauve@linkmauve.fr (mailing list archive) |
|---|---|
| State | New |
| Headers |
Return-Path: <linux-sunxi+bounces-24448-sunxi=pue.re@lists.linux.dev> X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114]) by mxe881.netcup.net (Postfix) with ESMTPS id 674471C09D6 for <noreply@patchwork.local>; Wed, 15 Jul 2026 19:56:56 +0200 (CEST) Authentication-Results: mxe881; spf=pass (sender IP is 172.105.105.114) smtp.mailfrom=linux-sunxi+bounces-24448-noreply=patchwork.local@lists.linux.dev smtp.helo=tor.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.105.105.114 as permitted sender) client-ip=172.105.105.114; envelope-from=linux-sunxi+bounces-24448-noreply=patchwork.local@lists.linux.dev; helo=tor.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id 90F66306C3CB for <noreply@patchwork.local>; Wed, 15 Jul 2026 17:53:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9684348C8B2; Wed, 15 Jul 2026 17:53:21 +0000 (UTC) X-Original-To: linux-sunxi@lists.linux.dev Received: from luna.linkmauve.fr (82-65-109-163.subs.proxad.net [82.65.109.163]) (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 A435248C8DC; Wed, 15 Jul 2026 17:53:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.65.109.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784138001; cv=none; b=qYhpDmRBDw/5QTbFbrsk+Nd0IykJSGh1as7GSND1WMPwNO7jdonJ89LKJO6bfO2NGEwOKtUHyKqdJqCBkeMNTxXbzLldP/BpfqTz009TJo/2kdrTkSMFHRclvhSRQQ/9b2Z6cDyJnnYJl/dHCjCAHzrWXVk+SCcgXH7/BUCsmLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784138001; c=relaxed/simple; bh=uOz8qHflYfhCLHUoFf+DPpLsT3ojAu4y0xHkt0KrZYs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cZ3Yx+INpGRvdWwlywn7iRxIYHibpzzoiNaiTaPOasW8A8HIDYkB6iIN1Ho7RIjW4zO94Rn3X9GQuQm3mO9tZq/iepj7n34gfMOU0Ar3KgHLTZzADqG/dv2IhOyTo2Gi1VKHNdAz8S8jNL8AL2wmmOSVU7Ox34xpxJJT5KuG55k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linkmauve.fr; spf=pass smtp.mailfrom=linkmauve.fr; arc=none smtp.client-ip=82.65.109.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linkmauve.fr Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linkmauve.fr Received: by luna.linkmauve.fr (Postfix, from userid 1000) id B9800F40D23; Wed, 15 Jul 2026 19:52:48 +0200 (CEST) From: Link Mauve <linkmauve@linkmauve.fr> To: Srinivas Kandagatla <srini@kernel.org> Cc: Link Mauve <linkmauve@linkmauve.fr>, Neil Armstrong <neil.armstrong@linaro.org>, Kevin Hilman <khilman@baylibre.com>, Jerome Brunet <jbrunet@baylibre.com>, Martin Blumenstingl <martin.blumenstingl@googlemail.com>, Jonathan Cameron <jic23@kernel.org>, David Lechner <dlechner@baylibre.com>, =?utf-8?q?Nuno_S=C3=A1?= <nuno.sa@analog.com>, Andy Shevchenko <andy@kernel.org>, Sakari Ailus <sakari.ailus@linux.intel.com>, Tianshu Qiu <tian.shu.qiu@intel.com>, Bingbu Cao <bingbu.cao@intel.com>, Mauro Carvalho Chehab <mchehab@kernel.org>, Aaro Koskinen <aaro.koskinen@iki.fi>, Andreas Kemnade <andreas@kemnade.info>, Roger Quadros <rogerq@kernel.org>, Tony Lindgren <tony@atomide.com>, Lee Jones <lee@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Bartosz Golaszewski <brgl@kernel.org>, "Vaibhaav Ram T.L" <vaibhaavram.tl@microchip.com>, Kumaravel Thiagarajan <kumaravel.thiagarajan@microchip.com>, Frank Li <Frank.Li@nxp.com>, Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix Kernel Team <kernel@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, Vladimir Zapolskiy <vz@mleia.com>, =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>, Orson Zhai <orsonzhai@gmail.com>, Baolin Wang <baolin.wang@linux.alibaba.com>, Chunyan Zhang <zhang.lyra@gmail.com>, Maxime Coquelin <mcoquelin.stm32@gmail.com>, Alexandre Torgue <alexandre.torgue@foss.st.com>, Praveen Teja Kundanala <praveen.teja.kundanala@amd.com>, Kalyani Akula <kalyani.akula@amd.com>, Michal Simek <michal.simek@amd.com>, Alexandre Belloni <alexandre.belloni@bootlin.com>, Joshua Kinard <linux@kumba.dev>, Antoniu Miclaus <antoniu.miclaus@analog.com>, Chen-Yu Tsai <wens@kernel.org>, Jernej Skrabec <jernej.skrabec@gmail.com>, Samuel Holland <samuel@sholland.org>, Miguel Ojeda <ojeda@kernel.org>, Boqun Feng <boqun@kernel.org>, Gary Guo <gary@garyguo.net>, =?utf-8?q?Bj?= =?utf-8?q?=C3=B6rn_Roy_Baron?= <bjorn3_gh@protonmail.com>, Benno Lossin <lossin@kernel.org>, Andreas Hindborg <a.hindborg@kernel.org>, Alice Ryhl <aliceryhl@google.com>, Trevor Gross <tmgross@umich.edu>, Danilo Krummrich <dakr@kernel.org>, Daniel Almeida <daniel.almeida@collabora.com>, Tamir Duberstein <tamird@kernel.org>, Alexandre Courbot <acourbot@nvidia.com>, =?utf-8?q?Onur_=C3=96zkan?= <work@onurozkan.dev>, Daniel Lezcano <daniel.lezcano@kernel.org>, Johan Hovold <johan@kernel.org>, Ronald Claveau <linux-kernel-dev@aliel.fr>, Salah Triki <salah.triki@gmail.com>, Yury Norov <ynorov@nvidia.com>, David Carlier <devnexen@gmail.com>, Achim Gratz <Achim.Gratz@Stromeko.DE>, Alexander Sverdlin <alexander.sverdlin@siemens.com>, Patrick Wicki <patrick.wicki@siemens.com>, Markus Heidelberg <m.heidelberg@cab.de>, Markus Perkins <markus@notsyncing.net>, =?utf-8?q?Uwe_Kleine-K=C3=B6nig_=28?= =?utf-8?q?The_Capable_Hub=29?= <u.kleine-koenig@baylibre.com>, Bjorn Helgaas <bhelgaas@google.com>, Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>, Chen Ni <nichen@iscas.ac.cn>, Kees Cook <kees@kernel.org>, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-media@vger.kernel.org, linux-omap@vger.kernel.org, mfd@lists.linux.dev, linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org, imx@lists.linux.dev, linux-arm-msm@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-rtc@vger.kernel.org, linux-sunxi@lists.linux.dev, rust-for-linux@vger.kernel.org Subject: [PATCH 6/8] firmware: meson_sm: make reg_write callback take const void * Date: Wed, 15 Jul 2026 19:52:22 +0200 Message-ID: <20260715175229.24672-7-linkmauve@linkmauve.fr> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260715175229.24672-1-linkmauve@linkmauve.fr> References: <20260715175229.24672-1-linkmauve@linkmauve.fr> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: <linux-sunxi.lists.linux.dev> List-Subscribe: <mailto:linux-sunxi+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:linux-sunxi+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [-1.16 / 15.00]; BAYES_HAM(-5.50)[100.00%]; RBL_SENDERSCORE(2.00)[172.105.105.114:from]; SUSPICIOUS_RECIPS(1.50)[]; MID_CONTAINS_FROM(1.00)[]; MAILLIST(-0.15)[generic]; MIME_GOOD(-0.10)[text/plain]; BAD_REP_POLICIES(0.10)[]; HAS_LIST_UNSUB(-0.01)[]; TAGGED_RCPT(0.00)[]; DMARC_DNSFAIL(0.00)[linkmauve.fr : server fail]; DBL_BLOCKED_OPENRESOLVER(0.00)[linkmauve.fr:email,tor.lore.kernel.org:rdns,tor.lore.kernel.org:helo]; PRECEDENCE_BULK(0.00)[]; FREEMAIL_CC(0.00)[linkmauve.fr,linaro.org,baylibre.com,googlemail.com,kernel.org,analog.com,linux.intel.com,intel.com,iki.fi,kemnade.info,atomide.com,arndb.de,linuxfoundation.org,microchip.com,nxp.com,pengutronix.de,gmail.com,mleia.com,linux.alibaba.com,foss.st.com,amd.com,bootlin.com,kumba.dev,sholland.org,garyguo.net,protonmail.com,google.com,umich.edu,collabora.com,nvidia.com,onurozkan.dev,aliel.fr,Stromeko.DE,siemens.com,cab.de,notsyncing.net,iscas.ac.cn,lists.infradead.org,vger.kernel.org,lists.linux.dev,st-md-mailman.stormreply.com]; FUZZY_BLOCKED(0.00)[rspamd.com]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_FIVE(0.00)[5]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RCVD_TLS_LAST(0.00)[]; RCPT_COUNT_GT_50(0.00)[88]; R_SPF_ALLOW(0.00)[+ip4:172.105.105.114]; FORGED_SENDER_MAILLIST(0.00)[]; R_DKIM_NA(0.00)[]; TAGGED_FROM(0.00)[bounces-24448-noreply=patchwork.local]; MIME_TRACE(0.00)[0:+]; FROM_NEQ_ENVFROM(0.00)[linkmauve@linkmauve.fr,linux-sunxi@lists.linux.dev]; ASN(0.00)[asn:63949, ipnet:172.105.96.0/20, country:SG]; TO_DN_SOME(0.00)[] X-Rspamd-Queue-Id: 674471C09D6 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= |
| Series |
nvmem: make reg_write() take a const void *
|
|
Commit Message
Link Mauve
July 15, 2026, 5:52 p.m. UTC
The previous commit switched from a pointer to mutable data to a pointer
to immutable data, so let’s fix all users of the nvmem_config API.
Signed-off-by: Link Mauve <linkmauve@linkmauve.fr>
---
drivers/firmware/meson/meson_sm.c | 2 +-
include/linux/firmware/meson/meson_sm.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Comments
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: Pre-existing issues: - [High] Concurrent calls to `meson_sm_call_write` or `meson_sm_call_read` will corrupt the shared IOMEM buffer. -- --- Patch [6]: [PATCH 6/8] firmware: meson_sm: make reg_write callback take const void * --- commit 05903fc223bec5b04f497c8b4bf66c4c6d90ebfe Author: Link Mauve <linkmauve@linkmauve.fr> firmware: meson_sm: make reg_write callback take const void * This commit updates the meson_sm_call_write callback and its header declaration to take a const void * buffer. This aligns with a previous change to the nvmem_config API that switched from a mutable to an immutable data pointer. > diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c > index ab9751a59b552..5d4da2e3c3a94 100644 > --- a/drivers/firmware/meson/meson_sm.c > +++ b/drivers/firmware/meson/meson_sm.c > @@ -196,7 +196,7 @@ EXPORT_SYMBOL(meson_sm_call_read); > * > * Return: size of sent data on success, a negative value on error > */ > -int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer, > +int meson_sm_call_write(struct meson_sm_firmware *fw, const void *buffer, > unsigned int size, unsigned int cmd_index, u32 arg0, > u32 arg1, u32 arg2, u32 arg3, u32 arg4) > { [ ... ] > memcpy(fw->sm_shmem_in_base, buffer, size); > > if (meson_sm_call(fw, cmd_index, &written, arg0, arg1, arg2, arg3, arg4) < 0) > return -EINVAL; [Severity: High] This isn't a bug introduced by this patch, but does this function need locking to protect the shared IOMEM buffer? It appears that concurrent calls to meson_sm_call_write() or meson_sm_call_read() could corrupt the shared sm_shmem_in_base and sm_shmem_out_base buffers. If multiple threads concurrently write or read the nvmem sysfs files, they might overwrite each other's payloads before the SMC executes, sending corrupted data to the Secure Monitor. A similar pattern exists in meson_sm_call_read(): if (buffer) memcpy(buffer, fw->sm_shmem_out_base, size); Are there external locks that guarantee serialized access to these functions, or should we be synchronizing these shared memory operations?
diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c index ab9751a59b55..5d4da2e3c3a9 100644 --- a/drivers/firmware/meson/meson_sm.c +++ b/drivers/firmware/meson/meson_sm.c @@ -196,7 +196,7 @@ EXPORT_SYMBOL(meson_sm_call_read); * * Return: size of sent data on success, a negative value on error */ -int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer, +int meson_sm_call_write(struct meson_sm_firmware *fw, const void *buffer, unsigned int size, unsigned int cmd_index, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4) { diff --git a/include/linux/firmware/meson/meson_sm.h b/include/linux/firmware/meson/meson_sm.h index 3ebc2bd9a976..92cc61f3a1c0 100644 --- a/include/linux/firmware/meson/meson_sm.h +++ b/include/linux/firmware/meson/meson_sm.h @@ -21,7 +21,7 @@ struct meson_sm_firmware; int meson_sm_call(struct meson_sm_firmware *fw, unsigned int cmd_index, s32 *ret, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4); -int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer, +int meson_sm_call_write(struct meson_sm_firmware *fw, const void *buffer, unsigned int b_size, unsigned int cmd_index, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4); int meson_sm_call_read(struct meson_sm_firmware *fw, void *buffer,