From: "José Expósito" <jose.exposito89@gmail.com>
To: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Maxime Ripard <maxime@cerno.tech>,
Jonas Karlman <jonas@kwiboo.se>, David Airlie <airlied@linux.ie>,
Thomas Zimmermann <tzimmermann@suse.de>,
dri-devel@lists.freedesktop.org,
Neil Armstrong <narmstrong@baylibre.com>,
linux-kernel@vger.kernel.org,
Robert Foss <robert.foss@linaro.org>,
Tzung-Bi Shih <tzungbi@google.com>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Hsin-Yi Wang <hsinyi@chromium.org>,
kernel@collabora.com, Sam Ravnborg <sam@ravnborg.org>,
Xin Ji <xji@analogixsemi.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>
Subject: Re: [PATCH] drm/bridge: anx7625: Zero error variable when panel bridge not present
Date: Mon, 13 Jun 2022 19:30:58 +0200 [thread overview]
Message-ID: <20220613173058.GA132991@elementary> (raw)
In-Reply-To: <20220613163705.1531721-1-nfraprado@collabora.com>
On Mon, Jun 13, 2022 at 12:37:05PM -0400, Nícolas F. R. A. Prado wrote:
> While parsing the DT, the anx7625 driver checks for the presence of a
> panel bridge on endpoint 1. If it is missing, pdata->panel_bridge stores
> the error pointer and the function returns successfully without first
> cleaning that variable. This is an issue since other functions later
> check for the presence of a panel bridge by testing the trueness of that
> variable.
>
> In order to ensure proper behavior, zero out pdata->panel_bridge before
> returning when no panel bridge is found.
>
> Fixes: 9e82ea0fb1df ("drm/bridge: anx7625: switch to devm_drm_of_get_bridge")
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
>
> ---
>
> drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index 53a5da6c49dd..3aed4de16690 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -1657,8 +1657,10 @@ static int anx7625_parse_dt(struct device *dev,
>
> pdata->panel_bridge = devm_drm_of_get_bridge(dev, np, 1, 0);
> if (IS_ERR(pdata->panel_bridge)) {
> - if (PTR_ERR(pdata->panel_bridge) == -ENODEV)
> + if (PTR_ERR(pdata->panel_bridge) == -ENODEV) {
> + pdata->panel_bridge = NULL;
> return 0;
> + }
>
> return PTR_ERR(pdata->panel_bridge);
> }
> --
> 2.36.1
>
Thanks for spotting this error Nícolas. As you mentioned, prior to
9e82ea0fb1df the "pdata->panel_bridge" pointer was not modified
(i.e. left to NULL) on the ENODEV error branch.
I missed it during the refactor, sorry about that.
WARNING: multiple messages have this Message-ID (diff)
From: "José Expósito" <jose.exposito89@gmail.com>
To: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
Cc: Robert Foss <robert.foss@linaro.org>,
kernel@collabora.com,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Daniel Vetter <daniel@ffwll.ch>, David Airlie <airlied@linux.ie>,
Hsin-Yi Wang <hsinyi@chromium.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Jonas Karlman <jonas@kwiboo.se>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Maxime Ripard <maxime@cerno.tech>,
Neil Armstrong <narmstrong@baylibre.com>,
Sam Ravnborg <sam@ravnborg.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Tzung-Bi Shih <tzungbi@google.com>, Xin Ji <xji@analogixsemi.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] drm/bridge: anx7625: Zero error variable when panel bridge not present
Date: Mon, 13 Jun 2022 19:30:58 +0200 [thread overview]
Message-ID: <20220613173058.GA132991@elementary> (raw)
In-Reply-To: <20220613163705.1531721-1-nfraprado@collabora.com>
On Mon, Jun 13, 2022 at 12:37:05PM -0400, Nícolas F. R. A. Prado wrote:
> While parsing the DT, the anx7625 driver checks for the presence of a
> panel bridge on endpoint 1. If it is missing, pdata->panel_bridge stores
> the error pointer and the function returns successfully without first
> cleaning that variable. This is an issue since other functions later
> check for the presence of a panel bridge by testing the trueness of that
> variable.
>
> In order to ensure proper behavior, zero out pdata->panel_bridge before
> returning when no panel bridge is found.
>
> Fixes: 9e82ea0fb1df ("drm/bridge: anx7625: switch to devm_drm_of_get_bridge")
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
>
> ---
>
> drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index 53a5da6c49dd..3aed4de16690 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -1657,8 +1657,10 @@ static int anx7625_parse_dt(struct device *dev,
>
> pdata->panel_bridge = devm_drm_of_get_bridge(dev, np, 1, 0);
> if (IS_ERR(pdata->panel_bridge)) {
> - if (PTR_ERR(pdata->panel_bridge) == -ENODEV)
> + if (PTR_ERR(pdata->panel_bridge) == -ENODEV) {
> + pdata->panel_bridge = NULL;
> return 0;
> + }
>
> return PTR_ERR(pdata->panel_bridge);
> }
> --
> 2.36.1
>
Thanks for spotting this error Nícolas. As you mentioned, prior to
9e82ea0fb1df the "pdata->panel_bridge" pointer was not modified
(i.e. left to NULL) on the ENODEV error branch.
I missed it during the refactor, sorry about that.
next prev parent reply other threads:[~2022-06-13 17:31 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-13 16:37 [PATCH] drm/bridge: anx7625: Zero error variable when panel bridge not present Nícolas F. R. A. Prado
2022-06-13 16:37 ` Nícolas F. R. A. Prado
2022-06-13 17:30 ` José Expósito [this message]
2022-06-13 17:30 ` José Expósito
2022-06-14 7:52 ` AngeloGioacchino Del Regno
2022-06-14 7:52 ` AngeloGioacchino Del Regno
2022-06-15 16:04 ` Robert Foss
2022-06-15 16:04 ` Robert Foss
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=20220613173058.GA132991@elementary \
--to=jose.exposito89@gmail.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@linux.ie \
--cc=andrzej.hajda@intel.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hsinyi@chromium.org \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kernel@collabora.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime@cerno.tech \
--cc=narmstrong@baylibre.com \
--cc=nfraprado@collabora.com \
--cc=robert.foss@linaro.org \
--cc=sam@ravnborg.org \
--cc=tzimmermann@suse.de \
--cc=tzungbi@google.com \
--cc=xji@analogixsemi.com \
/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.