From: sashiko-bot@kernel.org
To: "Vishnu Reddy" <busanna.reddy@oss.qualcomm.com>
Cc: conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v8 10/12] media: iris: Add platform data for glymur
Date: Wed, 10 Jun 2026 06:54:56 +0000 [thread overview]
Message-ID: <20260610065456.9CDD61F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260610-glymur-v8-10-1c79b9d51fc0@oss.qualcomm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The local stack variable `fw_fid` is passed by reference to `iris_vpu_bus_create_device()`, which stores its address in the persistent device's `platform_data` field, leading to a dangling pointer when the function returns.
- [High] The `core->fw_dev` pointer is not set to NULL after the context bank device is unregistered in `iris_glymur_deinit_cb_devs`, causing Use-After-Free and Double Free vulnerabilities.
--
commit ca3d38405759f1b57b41c987f0bd9782975ce278
Author: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
media: iris: Add platform data for glymur
On glymur platform, the iris core shares most properties with the
iris core on the SM8550 platform. This patch adds glymur specific
platform data, reusing SM8550 definitions wherever applicable.
> diff --git a/drivers/media/platform/qcom/iris/iris_platform_glymur.c b/drivers/media/platform/qcom/iris/iris_platform_glymur.c
> new file mode 100644
> index 0000000000000..c42ac99870ede
> --- /dev/null
> +++ b/drivers/media/platform/qcom/iris/iris_platform_glymur.c
[ ... ]
> +int iris_glymur_init_cb_devs(struct iris_core *core)
> +{
> + u64 dma_mask = core->iris_platform_data->dma_mask;
> + const u32 fw_fid = IOMMU_FID_IRIS_FIRMWARE;
> + struct device *dev;
> +
> + dev = iris_vpu_bus_create_device(core->dev, "iris-firmware", dma_mask, &fw_fid);
[Severity: High]
Is it safe to pass a pointer to the local stack variable fw_fid here?
Looking at iris_vpu_bus_create_device(), the pointer is assigned directly
to dev->platform_data without copying the underlying value:
iris_vpu_bus_create_device() {
...
dev->platform_data = (void *)iommu_fid;
...
}
Since fw_fid is allocated on the stack in iris_glymur_init_cb_devs(), won't
dev->platform_data become a dangling pointer once this function returns?
If the IOMMU configuration is deferred and reprobed later via
bus_iommu_probe(), the bus's dma_configure callback might dereference
dev->platform_data and read stack garbage.
> + if (IS_ERR(dev))
> + return PTR_ERR(dev);
> +
> + if (device_iommu_mapped(dev))
> + core->fw_dev = dev;
> + else
> + device_unregister(dev);
> +
> + return 0;
> +}
> +
> +void iris_glymur_deinit_cb_devs(struct iris_core *core)
> +{
> + if (core->fw_dev)
> + device_unregister(core->fw_dev);
[Severity: High]
Should core->fw_dev be set to NULL after unregistering the device?
If the driver's core initialization is invoked again and
iris_glymur_init_cb_devs() is called, but device_iommu_mapped(dev) is false,
the newly created device is unregistered without overwriting core->fw_dev.
This could leave a stale pointer in core->fw_dev. If the core initialization
sequence proceeds to load the firmware, could it use the stale core->fw_dev
pointer, or result in a double free if iris_glymur_deinit_cb_devs() is
called again on the failure path?
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260610-glymur-v8-0-1c79b9d51fc0@oss.qualcomm.com?part=10
next prev parent reply other threads:[~2026-06-10 6:54 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-10 6:29 [PATCH v8 00/12] media: iris: Add support for glymur platform Vishnu Reddy
2026-06-10 6:29 ` [PATCH v8 01/12] media: iris: Add iris vpu bus support Vishnu Reddy
2026-06-10 6:46 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 02/12] iommu: Add iris-vpu-bus to iommu_buses Vishnu Reddy
2026-06-10 6:29 ` [PATCH v8 03/12] dt-bindings: media: qcom,glymur-iris: Add glymur video codec Vishnu Reddy
2026-06-10 6:29 ` [PATCH v8 04/12] media: iris: Add context bank hooks for platform specific initialization Vishnu Reddy
2026-06-10 6:40 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 05/12] media: iris: Enable Secure PAS support with IOMMU managed by Linux Vishnu Reddy
2026-06-10 6:45 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 06/12] media: iris: Replace enum-indexed clock and power domain tables with per-block structures Vishnu Reddy
2026-06-10 6:49 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 07/12] media: iris: Add power sequence for glymur Vishnu Reddy
2026-06-10 6:46 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 08/12] media: iris: Handle CPU_CS_SCIACMDARG3 register write via program bootup registers hook Vishnu Reddy
2026-06-10 6:40 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 09/12] media: iris: Add support to select core for dual core platforms Vishnu Reddy
2026-06-10 6:53 ` sashiko-bot
2026-06-10 6:29 ` [PATCH v8 10/12] media: iris: Add platform data for glymur Vishnu Reddy
2026-06-10 6:54 ` sashiko-bot [this message]
2026-06-10 6:29 ` [PATCH v8 11/12] arm64: dts: qcom: glymur: Add iris video node Vishnu Reddy
2026-06-10 8:44 ` Bryan O'Donoghue
2026-06-10 6:29 ` [PATCH v8 12/12] arm64: dts: qcom: glymur-crd: Enable iris video codec node Vishnu Reddy
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=20260610065456.9CDD61F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=busanna.reddy@oss.qualcomm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox