Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13450644ybl; Sun, 29 Dec 2019 12:10:39 -0800 (PST) X-Google-Smtp-Source: APXvYqyntY+9JkBOxVLWkKzcRIVAUVYOqm1C5MFt4dvIX244fLAayE82Ei5FXS1j8AAaMAGWgiuP X-Received: by 2002:a9d:62d9:: with SMTP id z25mr23174390otk.249.1577650239265; Sun, 29 Dec 2019 12:10:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577650239; cv=none; d=google.com; s=arc-20160816; b=wZMDo3O8z0h3E6FkoJFQWcPx3uyMnDLI3mMo4MwWC2UUlRJGIqbC9GBiutiVpzQ9EK XdgVExU3aXeSLyLqtGv4JZuwkbzXoKPw0NKIWUDFh93AjeZn21m4dWafeqt50dmK8O5C 6rJR2qRSJ9w+6CYloeo5pURk/odZGky0nqaWf6h3DJQlz/WHxcHtiBsjllHf1O9cWN1Q r8d3MzoYrW+GFguUW/K8GZABzkBZ2I3bdNFJiPdjv2/rBK+/CaYQy7j8mN7ZEttqP2bZ wdFDgRK+PssmrGfJ03kGNWYnrfqq5RnIUf42utrwa4NjYKaOPJUb6NOHh/L+NAIS38Bi HZxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=R05LvWvRX4ZtEdBNFpHJDOurggSTFwBu8Z4w07pCCds=; b=O9n+60DxD61It6Z0VG/Vq52jYeSQJNaUTMIEs19aQf7K7izMlswbWejFQ9I/Q+7FkS JF4qaUKYrAEXMEmVUdB9KpxxUtPtrwQUu5p3GaW1u3AaXIgDl7hbV9z0Q5gf8LL9/SMl OoDAN9jFWqpGzGOkGQHGDgMtCi4f9df7cqZI+AAXxkXA/zAKRXGuRdh0uY2K3DlXeJBN gjc0RX57Jz1APX/C0xoC0UTHpCLAzvAhHvUhhlfP/6PCTNFx+s2GILzL0WDDzAys4cnj qV/VWGQrd0qoC0zLYIe/Sq/Ndfch9srFvA1LXkbTvWCsELmh77+Oy29K6cFiJMTkmbc1 Ow9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sRYkrtP+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w64si20418340oif.51.2019.12.29.12.10.28; Sun, 29 Dec 2019 12:10:39 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sRYkrtP+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728917AbfL2RaJ (ORCPT + 99 others); Sun, 29 Dec 2019 12:30:09 -0500 Received: from mail.kernel.org ([198.145.29.99]:55660 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728841AbfL2RaG (ORCPT ); Sun, 29 Dec 2019 12:30:06 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 73B5420409; Sun, 29 Dec 2019 17:30:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640605; bh=a6pGYxHb+KXx9s1/QjuSKy1CuajyZEHhZjF4rVWi0us=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sRYkrtP+WP6yZmE7oi1urpss6es1eb2m6tCCnrE36I973Qs0duG0g/78vbCflDt/P nxpAt0exDPWgj/5eCmTsAR9SxR6u2Enij0rKXJ529IAUQgziwchn2V21Dy7Y/zWjl+ E6SPtEbfeEl5vxjO0psQRGrfP+uP3SNkvsVjWorg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Benoit Parrot , Nikhil Devshatwar , Hans Verkuil , Mauro Carvalho Chehab , Sasha Levin Subject: [PATCH 4.19 064/219] media: ti-vpe: vpe: Fix Motion Vector vpdma stride Date: Sun, 29 Dec 2019 18:17:46 +0100 Message-Id: <20191229162516.227457550@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162508.458551679@linuxfoundation.org> References: <20191229162508.458551679@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Benoit Parrot [ Upstream commit 102af9b9922f658f705a4b0deaccabac409131bf ] commit 3dc2046ca78b ("[media] media: ti-vpe: vpe: allow use of user specified stride") and commit da4414eaed15 ("[media] media: ti-vpe: vpdma: add support for user specified stride") resulted in the Motion Vector stride to be the same as the image stride. This caused memory corruption in the output image as mentioned in commit 00db969964c8 ("[media] media: ti-vpe: vpe: Fix line stride for output motion vector"). Fixes: 3dc2046ca78b ("[media] media: ti-vpe: vpe: allow use of user specified stride") Fixes: da4414eaed15 ("[media] media: ti-vpe: vpdma: add support for user specified stride") Signed-off-by: Benoit Parrot Acked-by: Nikhil Devshatwar Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Sasha Levin --- drivers/media/platform/ti-vpe/vpe.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c index d70871d0ad2d..69c0e14cccb1 100644 --- a/drivers/media/platform/ti-vpe/vpe.c +++ b/drivers/media/platform/ti-vpe/vpe.c @@ -1027,11 +1027,14 @@ static void add_out_dtd(struct vpe_ctx *ctx, int port) dma_addr_t dma_addr; u32 flags = 0; u32 offset = 0; + u32 stride; if (port == VPE_PORT_MV_OUT) { vpdma_fmt = &vpdma_misc_fmts[VPDMA_DATA_FMT_MV]; dma_addr = ctx->mv_buf_dma[mv_buf_selector]; q_data = &ctx->q_data[Q_DATA_SRC]; + stride = ALIGN((q_data->width * vpdma_fmt->depth) >> 3, + VPDMA_STRIDE_ALIGN); } else { /* to incorporate interleaved formats */ int plane = fmt->coplanar ? p_data->vb_part : 0; @@ -1058,6 +1061,7 @@ static void add_out_dtd(struct vpe_ctx *ctx, int port) } /* Apply the offset */ dma_addr += offset; + stride = q_data->bytesperline[VPE_LUMA]; } if (q_data->flags & Q_DATA_FRAME_1D) @@ -1069,7 +1073,7 @@ static void add_out_dtd(struct vpe_ctx *ctx, int port) MAX_W, MAX_H); vpdma_add_out_dtd(&ctx->desc_list, q_data->width, - q_data->bytesperline[VPE_LUMA], &q_data->c_rect, + stride, &q_data->c_rect, vpdma_fmt, dma_addr, MAX_OUT_WIDTH_REG1, MAX_OUT_HEIGHT_REG1, p_data->channel, flags); } @@ -1088,10 +1092,13 @@ static void add_in_dtd(struct vpe_ctx *ctx, int port) dma_addr_t dma_addr; u32 flags = 0; u32 offset = 0; + u32 stride; if (port == VPE_PORT_MV_IN) { vpdma_fmt = &vpdma_misc_fmts[VPDMA_DATA_FMT_MV]; dma_addr = ctx->mv_buf_dma[mv_buf_selector]; + stride = ALIGN((q_data->width * vpdma_fmt->depth) >> 3, + VPDMA_STRIDE_ALIGN); } else { /* to incorporate interleaved formats */ int plane = fmt->coplanar ? p_data->vb_part : 0; @@ -1118,6 +1125,7 @@ static void add_in_dtd(struct vpe_ctx *ctx, int port) } /* Apply the offset */ dma_addr += offset; + stride = q_data->bytesperline[VPE_LUMA]; if (q_data->flags & Q_DATA_INTERLACED_SEQ_TB) { /* @@ -1153,10 +1161,10 @@ static void add_in_dtd(struct vpe_ctx *ctx, int port) if (p_data->vb_part && fmt->fourcc == V4L2_PIX_FMT_NV12) frame_height /= 2; - vpdma_add_in_dtd(&ctx->desc_list, q_data->width, - q_data->bytesperline[VPE_LUMA], &q_data->c_rect, - vpdma_fmt, dma_addr, p_data->channel, field, flags, frame_width, - frame_height, 0, 0); + vpdma_add_in_dtd(&ctx->desc_list, q_data->width, stride, + &q_data->c_rect, vpdma_fmt, dma_addr, + p_data->channel, field, flags, frame_width, + frame_height, 0, 0); } /* -- 2.20.1