[PATCH] drm/vmwgfx: Fix src/dst_pitch confusion
Nathan Chancellor
nathan at kernel.org
Tue Mar 14 21:16:15 UTC 2023
On Tue, Mar 14, 2023 at 05:14:45PM -0400, Zack Rusin wrote:
> From: Zack Rusin <zackr at vmware.com>
>
> The src/dst_pitch got mixed up during the rework of the function, make
> sure the offset's refer to the correct one.
>
> Spotted by clang:
> Clang warns (or errors with CONFIG_WERROR):
>
> drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c:509:29: error: variable 'dst_pitch' is uninitialized when used here [-Werror,-Wuninitialized]
> src_offset = ddirty->top * dst_pitch + ddirty->left * stdu->cpp;
> ^~~~~~~~~
> drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c:492:26: note: initialize the variable 'dst_pitch' to silence this warning
> s32 src_pitch, dst_pitch;
> ^
> = 0
> 1 error generated.
>
> Signed-off-by: Zack Rusin <zackr at vmware.com>
> Link: https://github.com/ClangBuiltLinux/linux/issues/1811
> Reported-by: Nathan Chancellor <nathan at kernel.org>
> Reported-by: Dave Airlie <airlied at gmail.com>
> Fixes: 39985eea5a6d ("drm/vmwgfx: Abstract placement selection")
Reviewed-by: Nathan Chancellor <nathan at kernel.org>
Thanks for the quick response and patch!
> ---
> drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> index d79a6eccfaa4..ba0c0e12cfe9 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> @@ -506,11 +506,11 @@ static void vmw_stdu_bo_cpu_commit(struct vmw_kms_dirty *dirty)
> /* Assume we are blitting from Guest (bo) to Host (display_srf) */
> src_pitch = stdu->display_srf->metadata.base_size.width * stdu->cpp;
> src_bo = &stdu->display_srf->res.guest_memory_bo->tbo;
> - src_offset = ddirty->top * dst_pitch + ddirty->left * stdu->cpp;
> + src_offset = ddirty->top * src_pitch + ddirty->left * stdu->cpp;
>
> dst_pitch = ddirty->pitch;
> dst_bo = &ddirty->buf->tbo;
> - dst_offset = ddirty->fb_top * src_pitch + ddirty->fb_left * stdu->cpp;
> + dst_offset = ddirty->fb_top * dst_pitch + ddirty->fb_left * stdu->cpp;
>
> (void) vmw_bo_cpu_blit(dst_bo, dst_offset, dst_pitch,
> src_bo, src_offset, src_pitch,
> --
> 2.38.1
>
More information about the dri-devel
mailing list