[PATCH] gpu: lontium-lt9611: Fix NULL pointer dereference in lt9611_connector_init()

Zeng Jingxiang posted 1 patch 3 years, 8 months ago
drivers/gpu/drm/bridge/lontium-lt9611.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] gpu: lontium-lt9611: Fix NULL pointer dereference in lt9611_connector_init()
Posted by Zeng Jingxiang 3 years, 8 months ago
From: Zeng Jingxiang <linuszeng@tencent.com>

A NULL check for bridge->encoder shows that it may be NULL, but it
already been dereferenced on all paths leading to the check.
812	if (!bridge->encoder) {

Dereference the pointer bridge->encoder.
810	drm_connector_attach_encoder(&lt9611->connector, bridge->encoder);

Signed-off-by: Zeng Jingxiang <linuszeng@tencent.com>
---
 drivers/gpu/drm/bridge/lontium-lt9611.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/bridge/lontium-lt9611.c
index 7ef8fe5abc12..81a4751573fa 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611.c
@@ -807,13 +807,14 @@ static int lt9611_connector_init(struct drm_bridge *bridge, struct lt9611 *lt961
 
 	drm_connector_helper_add(&lt9611->connector,
 				 &lt9611_bridge_connector_helper_funcs);
-	drm_connector_attach_encoder(&lt9611->connector, bridge->encoder);
 
 	if (!bridge->encoder) {
 		DRM_ERROR("Parent encoder object not found");
 		return -ENODEV;
 	}
 
+	drm_connector_attach_encoder(&lt9611->connector, bridge->encoder);
+
 	return 0;
 }
 
-- 
2.27.0
Re: [PATCH] gpu: lontium-lt9611: Fix NULL pointer dereference in lt9611_connector_init()
Posted by Robert Foss 3 years, 8 months ago
On Wed, 27 Jul 2022 at 09:31, Zeng Jingxiang <zengjx95@gmail.com> wrote:
>
> From: Zeng Jingxiang <linuszeng@tencent.com>
>
> A NULL check for bridge->encoder shows that it may be NULL, but it
> already been dereferenced on all paths leading to the check.
> 812     if (!bridge->encoder) {
>
> Dereference the pointer bridge->encoder.
> 810     drm_connector_attach_encoder(&lt9611->connector, bridge->encoder);
>
> Signed-off-by: Zeng Jingxiang <linuszeng@tencent.com>
> ---
>  drivers/gpu/drm/bridge/lontium-lt9611.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/bridge/lontium-lt9611.c
> index 7ef8fe5abc12..81a4751573fa 100644
> --- a/drivers/gpu/drm/bridge/lontium-lt9611.c
> +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c
> @@ -807,13 +807,14 @@ static int lt9611_connector_init(struct drm_bridge *bridge, struct lt9611 *lt961
>
>         drm_connector_helper_add(&lt9611->connector,
>                                  &lt9611_bridge_connector_helper_funcs);
> -       drm_connector_attach_encoder(&lt9611->connector, bridge->encoder);
>
>         if (!bridge->encoder) {
>                 DRM_ERROR("Parent encoder object not found");
>                 return -ENODEV;
>         }
>
> +       drm_connector_attach_encoder(&lt9611->connector, bridge->encoder);
> +
>         return 0;
>  }
>
> --
> 2.27.0
>

Applied to drm-misc-next.