[PATCH 05/14] exynos/fimg2d: check buffer space in g2d_copy()

Inki Dae inki.dae at samsung.com
Mon Aug 31 06:06:44 PDT 2015


On 2015년 08월 24일 23:14, Tobias Jakobi wrote:
> Move the parameter validation before buffer space checking
> so that we can exit early if it fails.
> Also don't reset the G2D context anymore in this situation
> (since the buffers are not partially submitted).
> 
> Signed-off-by: Tobias Jakobi <tjakobi at math.uni-bielefeld.de>
> ---
>  exynos/exynos_fimg2d.c | 26 ++++++++++++++------------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c
> index 9b7bcce..185aa80 100644
> --- a/exynos/exynos_fimg2d.c
> +++ b/exynos/exynos_fimg2d.c
> @@ -375,17 +375,7 @@ g2d_copy(struct g2d_context *ctx, struct g2d_image *src,
>  {
>  	union g2d_rop4_val rop4;
>  	union g2d_point_val pt;
> -	unsigned int src_w = 0, src_h = 0, dst_w = 0, dst_h = 0;
> -
> -	g2d_add_cmd(ctx, DST_SELECT_REG, G2D_SELECT_MODE_BGCOLOR);
> -	g2d_add_cmd(ctx, DST_COLOR_MODE_REG, dst->color_mode);
> -	g2d_add_base_addr(ctx, dst, g2d_dst);
> -	g2d_add_cmd(ctx, DST_STRIDE_REG, dst->stride);
> -
> -	g2d_add_cmd(ctx, SRC_SELECT_REG, G2D_SELECT_MODE_NORMAL);
> -	g2d_add_cmd(ctx, SRC_COLOR_MODE_REG, src->color_mode);
> -	g2d_add_base_addr(ctx, src, g2d_src);
> -	g2d_add_cmd(ctx, SRC_STRIDE_REG, src->stride);
> +	unsigned int src_w, src_h, dst_w, dst_h;
>  
>  	src_w = w;
>  	src_h = h;
> @@ -406,10 +396,22 @@ g2d_copy(struct g2d_context *ctx, struct g2d_image *src,
>  
>  	if (w <= 0 || h <= 0) {
>  		fprintf(stderr, "invalid width or height.\n");
> -		g2d_reset(ctx);
>  		return -EINVAL;
>  	}
>  
> +	if (g2d_check_space(ctx, 11, 2))
> +		return -ENOSPC;

Above lines could be integrated with 3 and 4 patches as one patch. And
you can make other codes to other one.

Thanks,
Inki Dae

> +
> +	g2d_add_cmd(ctx, DST_SELECT_REG, G2D_SELECT_MODE_BGCOLOR);
> +	g2d_add_cmd(ctx, DST_COLOR_MODE_REG, dst->color_mode);
> +	g2d_add_base_addr(ctx, dst, g2d_dst);
> +	g2d_add_cmd(ctx, DST_STRIDE_REG, dst->stride);
> +
> +	g2d_add_cmd(ctx, SRC_SELECT_REG, G2D_SELECT_MODE_NORMAL);
> +	g2d_add_cmd(ctx, SRC_COLOR_MODE_REG, src->color_mode);
> +	g2d_add_base_addr(ctx, src, g2d_src);
> +	g2d_add_cmd(ctx, SRC_STRIDE_REG, src->stride);
> +
>  	pt.val = 0;
>  	pt.data.x = src_x;
>  	pt.data.y = src_y;
> 



More information about the dri-devel mailing list