drm/rockchip: check yuv2yuv existence before assigning window data
authorHeiko Stuebner <heiko@sntech.de>
Sat, 26 Jan 2019 00:24:37 +0000 (01:24 +0100)
committerHeiko Stuebner <heiko@sntech.de>
Sun, 27 Jan 2019 19:28:17 +0000 (20:28 +0100)
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")
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/2556882.Heuq80WCVD@phil
drivers/gpu/drm/rockchip/rockchip_drm_vop.c

index c2679200d8655f854fe3ffa31dbfa41070d918cc..c7d4c6073ea59b70c56559288def3fb7fd6fe215 100644 (file)
@@ -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];
        }
 }