[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAL_JsqKjRbHCeFoZDE_wss5HMNmt8UBWa+y_8yJ6TC80xxiTOA@mail.gmail.com>
Date: Wed, 4 Sep 2024 08:18:49 -0500
From: Rob Herring <robh@...nel.org>
To: Dave Stevenson <dave.stevenson@...pberrypi.com>
Cc: Maxime Ripard <mripard@...nel.org>,
Raspberry Pi Kernel Maintenance <kernel-list@...pberrypi.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>, Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Daniel Vetter <daniel@...ll.ch>, dri-devel@...ts.freedesktop.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] drm: vc4: Use of_property_present()
On Wed, Sep 4, 2024 at 6:18 AM Dave Stevenson
<dave.stevenson@...pberrypi.com> wrote:
>
> Hi Rob
>
> On Tue, 3 Sept 2024 at 20:19, Rob Herring <robh@...nel.org> wrote:
> >
> > On Wed, Jul 31, 2024 at 2:13 PM Rob Herring (Arm) <robh@...nel.org> wrote:
> > >
> > > Use of_property_present() to test for property presence rather than
> > > of_find_property(). This is part of a larger effort to remove callers
> > > of of_find_property() and similar functions. of_find_property() leaks
> > > the DT struct property and data pointers which is a problem for
> > > dynamically allocated nodes which may be freed.
> > >
> > > Signed-off-by: Rob Herring (Arm) <robh@...nel.org>
> > > ---
> > > drivers/gpu/drm/vc4/vc4_hdmi.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > Ping!
>
> Sorry, this fell through the cracks.
>
> > >
> > > diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > index d57c4a5948c8..049de06460d5 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > @@ -2211,7 +2211,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
> > > struct device *dev = &vc4_hdmi->pdev->dev;
> > > struct platform_device *codec_pdev;
> > > const __be32 *addr;
> > > - int index, len;
> > > + int index;
> > > int ret;
> > >
> > > /*
> > > @@ -2234,7 +2234,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
> > > BUILD_BUG_ON(offsetof(struct vc4_hdmi_audio, card) != 0);
> > > BUILD_BUG_ON(offsetof(struct vc4_hdmi, audio) != 0);
> > >
> > > - if (!of_find_property(dev->of_node, "dmas", &len) || !len) {
> > > + if (!of_property_present(dev->of_node, "dmas")) {
>
> The existing conditional is true if the property is not present or is 0 length.
> Your new one is only true if the property isn't present, so it isn't the same.
It is not the kernel's job to validate the DT. It does a terrible job
of it and we have better tools for that now (schemas (though RPi
platforms are in a pretty sad state for schemas)). I'm pretty sure a
zero length or otherwise malformed "dmas" property would also cause a
dtc warning as well. Non-zero length is hardly a complete test
anyways. Any bogus value of "dmas" would pass. Or it can be completely
valid, but the DMA driver is not enabled (whether you even probe
depends on fw_devlinks).
The kernel should just parse the properties it wants and handle any errors then.
>
> Is there a more appropriate of_ call to return the length of the property?
There are several which are all based on the data type (string, u32,
u8, phandle+args, etc.). This case would be
of_count_phandle_with_args(). Unless you required something like 2
dmas entries instead of 1, I wouldn't use that here though.
Rob
Powered by blists - more mailing lists