diff mbox

[4/4] drm/exynos: fix NULL pointer reference

Message ID 1423120298-28619-4-git-send-email-jy0922.shim@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonyoung Shim Feb. 5, 2015, 7:11 a.m. UTC
There is a case called disable_plane callback function even if
plane->crtc is NULL from exynos_drm_encoder_disable and it will cause
NULL pointer reference error.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Gustavo Padovan Feb. 5, 2015, 1:07 p.m. UTC | #1
Hi,


2015-02-05 Joonyoung Shim <jy0922.shim@samsung.com>:

> There is a case called disable_plane callback function even if
> plane->crtc is NULL from exynos_drm_encoder_disable and it will cause
> NULL pointer reference error.
> 
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

You need to merge this patch with patch 3 or you will break the bisect.
The NULL pointer is introduced by the previous patch, so fix it in the same
patch.

Once that is fixed:

Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

for the whole series.

	Gustavo
Joonyoung Shim Feb. 6, 2015, 3:45 a.m. UTC | #2
Hi,

On 02/05/2015 10:07 PM, Gustavo Padovan wrote:
> Hi,
> 
> 
> 2015-02-05 Joonyoung Shim <jy0922.shim@samsung.com>:
> 
>> There is a case called disable_plane callback function even if
>> plane->crtc is NULL from exynos_drm_encoder_disable and it will cause
>> NULL pointer reference error.
>>
>> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> You need to merge this patch with patch 3 or you will break the bisect.
> The NULL pointer is introduced by the previous patch, so fix it in the same
> patch.
> 

Yeah, it is revealed by patch 3 but it was original problem from before
patch 3. How about apply this patch earlier than patch 3?

> Once that is fixed:
> 
> Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 

Thanks for review.
Gustavo Padovan Feb. 6, 2015, 12:44 p.m. UTC | #3
Hi,

2015-02-06 Joonyoung Shim <jy0922.shim@samsung.com>:

> Hi,
> 
> On 02/05/2015 10:07 PM, Gustavo Padovan wrote:
> > Hi,
> > 
> > 
> > 2015-02-05 Joonyoung Shim <jy0922.shim@samsung.com>:
> > 
> >> There is a case called disable_plane callback function even if
> >> plane->crtc is NULL from exynos_drm_encoder_disable and it will cause
> >> NULL pointer reference error.
> >>
> >> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> >> ---
> >>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > You need to merge this patch with patch 3 or you will break the bisect.
> > The NULL pointer is introduced by the previous patch, so fix it in the same
> > patch.
> > 
> 
> Yeah, it is revealed by patch 3 but it was original problem from before
> patch 3. How about apply this patch earlier than patch 3?

Okay. That sounds good too.

	Gustavo
Inki Dae Feb. 11, 2015, 11:36 a.m. UTC | #4
On 2015? 02? 05? 16:11, Joonyoung Shim wrote:
> There is a case called disable_plane callback function even if
> plane->crtc is NULL from exynos_drm_encoder_disable and it will cause
> NULL pointer reference error.

Applied. (patch 1 though 4)

Thanks,
Inki Dae

> 
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
> index 7e282e3..57de0bd 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
> @@ -102,7 +102,7 @@ static void exynos_drm_encoder_disable(struct drm_encoder *encoder)
>  
>  	/* all planes connected to this encoder should be also disabled. */
>  	drm_for_each_legacy_plane(plane, &dev->mode_config.plane_list) {
> -		if (plane->crtc == encoder->crtc)
> +		if (plane->crtc && (plane->crtc == encoder->crtc))
>  			plane->funcs->disable_plane(plane);
>  	}
>  }
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
index 7e282e3..57de0bd 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
@@ -102,7 +102,7 @@  static void exynos_drm_encoder_disable(struct drm_encoder *encoder)
 
 	/* all planes connected to this encoder should be also disabled. */
 	drm_for_each_legacy_plane(plane, &dev->mode_config.plane_list) {
-		if (plane->crtc == encoder->crtc)
+		if (plane->crtc && (plane->crtc == encoder->crtc))
 			plane->funcs->disable_plane(plane);
 	}
 }