d2990af3cd
[ Upstream commit 517621b7060096e48e42f545fa6646fc00252eac ] vmw_context_cotable can return either an error or a null pointer and its usage sometimes went unchecked. Subsequent code would then try to access either a null pointer or an error value. The invalid dereferences were only possible with malformed userspace apps which never properly initialized the rendering contexts. Check the results of vmw_context_cotable to fix the invalid derefs. Thanks: ziming zhang(@ezrak1e) from Ant Group Light-Year Security Lab who was the first person to discover it. Niels De Graef who reported it and helped to track down the poc. Fixes: 9c079b8ce8bf ("drm/vmwgfx: Adapt execbuf to the new validation api") Cc: <stable@vger.kernel.org> # v4.20+ Reported-by: Niels De Graef <ndegraef@redhat.com> Signed-off-by: Zack Rusin <zack.rusin@broadcom.com> Cc: Martin Krastev <martin.krastev@broadcom.com> Cc: Maaz Mombasawala <maaz.mombasawala@broadcom.com> Cc: Ian Forbes <ian.forbes@broadcom.com> Cc: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com> Cc: dri-devel@lists.freedesktop.org Reviewed-by: Maaz Mombasawala <maaz.mombasawala@broadcom.com> Reviewed-by: Martin Krastev <martin.krastev@broadcom.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240110200305.94086-1-zack.rusin@broadcom.com Signed-off-by: Sasha Levin <sashal@kernel.org> |
||
---|---|---|
.. | ||
device_include | ||
Kconfig | ||
Makefile | ||
ttm_lock.c | ||
ttm_lock.h | ||
ttm_object.c | ||
ttm_object.h | ||
vmwgfx_binding.c | ||
vmwgfx_binding.h | ||
vmwgfx_blit.c | ||
vmwgfx_bo.c | ||
vmwgfx_cmdbuf.c | ||
vmwgfx_cmdbuf_res.c | ||
vmwgfx_context.c | ||
vmwgfx_cotable.c | ||
vmwgfx_drv.c | ||
vmwgfx_drv.h | ||
vmwgfx_execbuf.c | ||
vmwgfx_fb.c | ||
vmwgfx_fence.c | ||
vmwgfx_fence.h | ||
vmwgfx_fifo.c | ||
vmwgfx_gmr.c | ||
vmwgfx_gmrid_manager.c | ||
vmwgfx_ioctl.c | ||
vmwgfx_irq.c | ||
vmwgfx_kms.c | ||
vmwgfx_kms.h | ||
vmwgfx_ldu.c | ||
vmwgfx_marker.c | ||
vmwgfx_mob.c | ||
vmwgfx_msg.c | ||
vmwgfx_msg.h | ||
vmwgfx_overlay.c | ||
vmwgfx_page_dirty.c | ||
vmwgfx_prime.c | ||
vmwgfx_reg.h | ||
vmwgfx_resource.c | ||
vmwgfx_resource_priv.h | ||
vmwgfx_scrn.c | ||
vmwgfx_shader.c | ||
vmwgfx_simple_resource.c | ||
vmwgfx_so.c | ||
vmwgfx_so.h | ||
vmwgfx_stdu.c | ||
vmwgfx_streamoutput.c | ||
vmwgfx_surface.c | ||
vmwgfx_thp.c | ||
vmwgfx_ttm_buffer.c | ||
vmwgfx_ttm_glue.c | ||
vmwgfx_va.c | ||
vmwgfx_validation.c | ||
vmwgfx_validation.h |