From: Christian Marangi <ansuelsmth@gmail.com>
To: Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>,
Mattijs Korpershoek <mkorpershoek@kernel.org>,
Marek Vasut <marek.vasut+renesas@mailbox.org>,
Heiko Schocher <hs@nabladev.com>,
Alexey Charkov <alchark@flipper.net>,
"Lucien.Jheng" <lucienzx159@gmail.com>,
Daniel Golle <daniel@makrotopia.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Christian Marangi <ansuelsmth@gmail.com>,
Mehmet Fide <mehmet.fide@screeningeagle.com>,
Casey Connolly <casey.connolly@linaro.org>,
Michal Simek <michal.simek@amd.com>,
Aristo Chen <aristo.chen@canonical.com>,
Quentin Schulz <quentin.schulz@cherry.de>,
Anshul Dalal <anshuld@ti.com>, Johan Jonker <jbx6244@gmail.com>,
Neha Malcom Francis <n-francis@ti.com>,
Marcello Sylvester Bauer <marcello.bauer@9elements.com>,
Mateus Lima Alves <mateuslima.ti@gmail.com>,
Tan Siewert <tan.siewert@9elements.com>, Yao Zi <me@ziyao.cc>,
Patrice Chotard <patrice.chotard@foss.st.com>,
Peng Fan <peng.fan@nxp.com>, Randolph Sapp <rs@ti.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Martin Schwan <m.schwan@phytec.de>,
u-boot@lists.u-boot-project.org
Subject: [PATCH v9 4/8] misc: fs_loader: validate requested offset on reading file
Date: Fri, 23 Oct 2026 21:00:25 +0200 [thread overview]
Message-ID: <20261023190034.911023-5-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20261023190034.911023-1-ansuelsmth@gmail.com>
Make sure we are not requesting an offset for the requesting file beyond
the actual size of the actual file.
If it's such the case, log and error and return -EINVAL.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/misc/fw_loader/fs_loader.c | 59 ++++++++++++++++++++++++------
1 file changed, 47 insertions(+), 12 deletions(-)
diff --git a/drivers/misc/fw_loader/fs_loader.c b/drivers/misc/fw_loader/fs_loader.c
index b1eb0311dd2b..6a1747e739d7 100644
--- a/drivers/misc/fw_loader/fs_loader.c
+++ b/drivers/misc/fw_loader/fs_loader.c
@@ -79,18 +79,10 @@ static int select_fs_dev(struct fw_loader_plat *plat)
return ret;
}
-/**
- * fw_get_filesystem_firmware - load firmware into an allocated buffer.
- * @dev: An instance of a driver.
- *
- * Return: Size of total read, negative value when error.
- */
-static int fw_get_filesystem_firmware(struct udevice *dev)
+static int fw_get_filesystem_prepare(struct udevice *dev)
{
- struct firmware *upriv = dev_get_uclass_priv(dev);
struct fw_loader_plat *plat = dev_get_uclass_plat(dev);
struct fw_loader_env_info info = { };
- loff_t actread = 0;
int ret;
generic_fw_loader_env_info(&info);
@@ -113,6 +105,51 @@ static int fw_get_filesystem_firmware(struct udevice *dev)
ret = select_fs_dev(plat);
}
+ return ret;
+}
+
+static void fw_get_filesystem_release(struct udevice *dev)
+{
+#ifdef CONFIG_CMD_UBIFS
+ umount_ubifs();
+#endif
+}
+
+static int __fw_get_filesystem_firmware_size(struct udevice *dev,
+ const char *name, loff_t *size)
+{
+ int ret;
+
+ ret = fw_get_filesystem_prepare(dev);
+ if (ret)
+ return ret;
+
+ return fs_size(name, size);
+}
+
+/**
+ * fw_get_filesystem_firmware - load firmware into an allocated buffer.
+ * @dev: An instance of a driver.
+ *
+ * Return: Size of total read, negative value when error.
+ */
+static int fw_get_filesystem_firmware(struct udevice *dev)
+{
+ struct firmware *upriv = dev_get_uclass_priv(dev);
+ loff_t size, actread = 0;
+ int ret;
+
+ ret = __fw_get_filesystem_firmware_size(dev, upriv->name, &size);
+ if (ret)
+ goto out;
+
+ if (upriv->offset > size) {
+ log_err("Invalid offset. Entry too small\n");
+ ret = -EINVAL;
+ goto out;
+ }
+
+ ret = fw_get_filesystem_prepare(dev);
if (ret)
goto out;
@@ -127,9 +164,7 @@ static int fw_get_filesystem_firmware(struct udevice *dev)
}
out:
-#ifdef CONFIG_CMD_UBIFS
- umount_ubifs();
-#endif
+ fw_get_filesystem_release(dev);
return ret;
}
--
2.55.0
next prev parent reply other threads:[~2026-10-23 19:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 19:00 [PATCH v9 0/8] misc: fs_loader: reorg and split to FS and FW loader + FIP loader Christian Marangi
2026-10-23 19:00 ` [PATCH v9 1/8] misc: fs_loader: fix ubifs not unmounted on dev_get_priv error Christian Marangi
2026-10-23 19:00 ` [PATCH v9 2/8] misc: fs_loader: reorganize and split to FS loader and FW UCLASS Christian Marangi
2026-10-26 12:37 ` Simon Glass
2026-10-23 19:00 ` [PATCH v9 3/8] misc: fw_loader: implement generic get_fw_loader_from_node() Christian Marangi
2026-10-23 19:00 ` Christian Marangi [this message]
2026-10-26 12:37 ` [PATCH v9 4/8] misc: fs_loader: validate requested offset on reading file Simon Glass
2026-10-23 19:00 ` [PATCH v9 5/8] misc: fw_loader: implement request_firmware_size() OP Christian Marangi
2026-10-26 12:37 ` Simon Glass
2026-10-23 19:00 ` [PATCH v9 6/8] doc: dtbinding: Update documentation for Generic Firmware loader Christian Marangi
2026-10-26 12:37 ` Simon Glass
2026-10-23 19:00 ` [PATCH v9 7/8] misc: fw_loader: introduce FIP loader driver Christian Marangi
2026-10-26 12:37 ` Simon Glass
2026-10-26 13:36 ` Christian Marangi
2026-10-23 19:00 ` [PATCH v9 8/8] test: dm: Add test for FW Loader feature Christian Marangi
2026-10-26 15:08 ` Simon Glass
2026-10-26 15:12 ` Christian Marangi (Ansuel)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261023190034.911023-5-ansuelsmth@gmail.com \
--to=ansuelsmth@gmail.com \
--cc=alchark@flipper.net \
--cc=anshuld@ti.com \
--cc=aristo.chen@canonical.com \
--cc=casey.connolly@linaro.org \
--cc=daniel@makrotopia.org \
--cc=hs@nabladev.com \
--cc=jbx6244@gmail.com \
--cc=lucienzx159@gmail.com \
--cc=m.schwan@phytec.de \
--cc=marcello.bauer@9elements.com \
--cc=marek.vasut+renesas@mailbox.org \
--cc=mateuslima.ti@gmail.com \
--cc=me@ziyao.cc \
--cc=mehmet.fide@screeningeagle.com \
--cc=michal.simek@amd.com \
--cc=mkorpershoek@kernel.org \
--cc=n-francis@ti.com \
--cc=neil.armstrong@linaro.org \
--cc=patrice.chotard@foss.st.com \
--cc=peng.fan@nxp.com \
--cc=quentin.schulz@cherry.de \
--cc=rs@ti.com \
--cc=sjg@chromium.org \
--cc=tan.siewert@9elements.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.u-boot-project.org \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.