Skip to contentSkip to conversation

drm/rockchip: check yuv2yuv existence before assigning window data

PATCH Applied Heiko Stuebner 2 participants 3 messages Jan 26, 2019 – Jan 27, 2019

Subsystems (4)
lore
Share & tools
lore

Heiko Stuebner

author maintainer
#0 lore raw

PATCH 1/1 drm/rockchip: check yuv2yuv existence before assigning window data

Before assigning window data, we should check if the yuv2yuv vop-data is set at all, because it looks like it can otherwise reference something wrong, as I saw on my rk3188 today which ended up in a null pointer dereference in vop_plane_atomic_update when accessing the yuv2yuv data.

Fixes 1c21aa8f2b68 ("drm/rockchip: Fix YUV buffers color rendering")
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpu/drm/rockchip/rockchip_drm_vop.c +3 -1
index 619b6db05d58..1dc9fd1ffbe3 100644
@@ -1675,7 +1675,9 @@ static void vop_win_init(struct vop *vop)
 
 		vop_win->data = win_data;
 		vop_win->vop = vop;
-		vop_win->yuv2yuv_data = &vop_data->win_yuv2yuv[i];
+
+		if (vop_data->win_yuv2yuv)
+			vop_win->yuv2yuv_data = &vop_data->win_yuv2yuv[i];
 	}
 }
 
Signature · 9 lines
2.19.2




_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Reviewed-by on v1 1/1
#1 lore raw
Quoted 16 lines · Heiko Stuebner

Before assigning window data, we should check if the yuv2yuv vop-data is set at all, because it looks like it can otherwise reference something wrong, as I saw on my rk3188 today which ended up in a null pointer dereference in vop_plane_atomic_update when accessing the yuv2yuv data.

Fixes 1c21aa8f2b68 ("drm/rockchip: Fix YUV buffers color rendering")
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpu/drm/rockchip/rockchip_drm_vop.c +0 -0
index 619b6db05d58..1dc9fd1ffbe3 100644

drivers/gpu/drm/rockchip/rockchip_drm_vop.c static void vop_win_init(struct vop *vop) · line 1683

Quoted 10 lines
drivers/gpu/drm/rockchip/rockchip_drm_vop.c +3 -1
@@ -1675,7 +1675,9 @@ static void vop_win_init(struct vop *vop)
 
 		vop_win->data = win_data;
 		vop_win->vop = vop;
-		vop_win->yuv2yuv_data = &vop_data->win_yuv2yuv[i];
+
+		if (vop_data->win_yuv2yuv)
+			vop_win->yuv2yuv_data = &vop_data->win_yuv2yuv[i];
 	}
 }
 

Ugh, another one of these.

Thanks,
Eze

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

author maintainer Applied
#2 lore raw
In reply to Heiko Stuebner

Am Samstag, 26. Januar 2019, 01:24:37 CET schrieb Heiko Stuebner:

Quoted 7 lines

Before assigning window data, we should check if the yuv2yuv vop-data is set at all, because it looks like it can otherwise reference something wrong, as I saw on my rk3188 today which ended up in a null pointer dereference in vop_plane_atomic_update when accessing the yuv2yuv data.

Fixes 1c21aa8f2b68 ("drm/rockchip: Fix YUV buffers color rendering")

applied to drm-misc-next where the fixed commit also waits for the next merge-window.

Heiko

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel