From: Vladimir Oltean <vladimir.oltean@nxp.com>
To: Heiko Stuebner <heiko@sntech.de>
Cc: linux-phy@lists.infradead.org, Vinod Koul <vkoul@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-can@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-ide@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
linux-pci@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
linux-riscv@lists.infradead.org,
linux-rockchip@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-sunxi@lists.linux.dev, linux-tegra@vger.kernel.org,
linux-usb@vger.kernel.org, netdev@vger.kernel.org,
spacemit@lists.linux.dev, UNGLinuxDriver@microchip.com,
Sandy Huang <hjc@rock-chips.com>,
Andy Yan <andy.yan@rock-chips.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>
Subject: Re: [PATCH v3 phy-next 10/24] drm/rockchip: dw_hdmi: avoid direct dereference of phy->dev.of_node
Date: Tue, 10 Mar 2026 10:37:52 +0200 [thread overview]
Message-ID: <20260310083752.ms6u4qpy3snl4h6w@skbuf> (raw)
In-Reply-To: <2218670.OBFZWjSADL@phil>
On Tue, Mar 10, 2026 at 09:24:43AM +0100, Heiko Stuebner wrote:
> Am Montag, 9. März 2026, 20:08:28 Mitteleuropäische Normalzeit schrieb Vladimir Oltean:
> > The dw_hdmi-rockchip driver validates pixel clock rates against the
> > HDMI PHY's internal clock provider on certain SoCs like RK3328.
> > This is currently achieved by dereferencing hdmi->phy->dev.of_node
> > to obtain the provider node, which violates the Generic PHY API's
> > encapsulation (the goal is for struct phy to be an opaque pointer).
> >
> > Refactor dw_hdmi_rockchip_bind() to perform a manual phandle lookup
> > on the "hdmi" PHY index within the controller's DT node. This provides
> > a parallel path to the clock provider's OF node without relying on the
> > internal structure of the struct phy handle.
> >
> > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
> > ---
> > Cc: Sandy Huang <hjc@rock-chips.com>
> > Cc: "Heiko Stübner" <heiko@sntech.de>
> > Cc: Andy Yan <andy.yan@rock-chips.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Thomas Zimmermann <tzimmermann@suse.de>
> > Cc: David Airlie <airlied@gmail.com>
> > Cc: Simona Vetter <simona@ffwll.ch>
> >
> > v1->v3: none
> > ---
>
> [...]
>
> > @@ -588,13 +589,17 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
> > return dev_err_probe(hdmi->dev, ret, "failed to get phy\n");
> > }
> >
> > - if (hdmi->phy) {
>
> nit: a comment would be nice here. I.e. hdmi->phy being an opaque pointer
> so checking hdmi->phy != NULL is not possible.
>
> With that being a "goal", I assume that information is not widely spread
> so this would prevent the next developer trying to change it back to
> "if (hdmi->phy)" while that handling change trickles down.
Testing the NULL quality of "struct phy *phy" is still possible and legal.
It means that you called an "optional" variant of phy_get(), and there
was no PHY.
Just that here, the ultimate intention isn't that. It is to abuse the
struct phy to get to something completely unrelated to the PHY API.
I wouldn't have had any problem if there was "just" a hdmi->phy NULL
pointer check.
> apart from that:
>
> Reviewed-by: Heiko Stueber <heiko@sntech.de>
Thanks for the review.
next prev parent reply other threads:[~2026-03-10 8:38 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-09 19:08 [PATCH v3 phy-next 00/24] Split Generic PHY consumer and provider API Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 01/24] ata: add <linux/pm_runtime.h> where missing Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 02/24] PCI: Add missing headers transitively included by <linux/phy/phy.h> Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 03/24] usb: add " Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 04/24] drm: add <linux/pm_runtime.h> where missing Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 05/24] phy: " Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 06/24] phy: spacemit: include missing <linux/phy/phy.h> Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 07/24] net: lan969x: include missing <linux/of.h> Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 08/24] PCI: Remove device links to PHY Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 09/24] ufs: exynos: stop poking into struct phy guts Vladimir Oltean
2026-03-19 17:14 ` Bart Van Assche
2026-03-09 19:08 ` [PATCH v3 phy-next 10/24] drm/rockchip: dw_hdmi: avoid direct dereference of phy->dev.of_node Vladimir Oltean
2026-03-10 8:24 ` Heiko Stuebner
2026-03-10 8:37 ` Vladimir Oltean [this message]
2026-03-10 9:08 ` Heiko Stuebner
2026-03-09 19:08 ` [PATCH v3 phy-next 11/24] drm/msm/dp: remove debugging prints with internal struct phy state Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 12/24] phy: move provider API out of public <linux/phy/phy.h> Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 13/24] phy: make phy_get_mode(), phy_(get|set)_bus_width() NULL tolerant Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 14/24] phy: introduce phy_get_max_link_rate() helper for consumers Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 15/24] drm/rockchip: dsi: include PHY provider header Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 16/24] drm: bridge: cdns-mhdp8546: use consumer API for getting PHY bus width Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 17/24] media: sunxi: a83-mips-csi2: include PHY provider header Vladimir Oltean
2026-03-10 2:45 ` Chen-Yu Tsai
2026-03-09 19:08 ` [PATCH v3 phy-next 18/24] net: renesas: rswitch: " Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 19/24] pinctrl: tegra-xusb: " Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 20/24] power: supply: cpcap-charger: include missing <linux/property.h> Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 21/24] phy: include PHY provider header (1/2) Vladimir Oltean
2026-03-10 8:42 ` Chen-Yu Tsai
2026-03-09 19:08 ` [PATCH v3 phy-next 22/24] phy: include PHY provider header (2/2) Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 23/24] phy: remove temporary provider compatibility from consumer header Vladimir Oltean
2026-03-09 19:08 ` [PATCH v3 phy-next 24/24] MAINTAINERS: add regexes for linux-phy Vladimir Oltean
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=20260310083752.ms6u4qpy3snl4h6w@skbuf \
--to=vladimir.oltean@nxp.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=airlied@gmail.com \
--cc=andy.yan@rock-chips.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=linux-tegra@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=netdev@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=spacemit@lists.linux.dev \
--cc=tzimmermann@suse.de \
--cc=vkoul@kernel.org \
/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