Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13372699ybl; Sun, 29 Dec 2019 10:19:06 -0800 (PST) X-Google-Smtp-Source: APXvYqzxw4em7hhOPM6tb2Asazmr5uLTK0wG0rr5IvZsCtKCmzhcm3OslRDofYNOQ+wg2u29TAMF X-Received: by 2002:a05:6830:1555:: with SMTP id l21mr65283504otp.41.1577643546851; Sun, 29 Dec 2019 10:19:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577643546; cv=none; d=google.com; s=arc-20160816; b=QKOAj2I3czfUT9o6YGl7C4elqda7fo49tIZR82xs8qambiZnJBtVNfvAwvO7F6u0Hp 2KQxJZni74l3gTuACeENMOPV4sF3xRzbQ6/FaFVQl3BkA76MFISok4TkGW2PFKEjDv5s PKN7J82svdUr6+7kHXozrZCrIftdakTC7sxM+ewgEIs0nj6N9EO8PAKTlHSRT2kK2rOT mCNU23U1/CCiDlT+8ekpV1+mCdJ5U1syzAAWr2i+SfRg0QlHzRftrUJVrrwLu8CDSbTE DeBqQPaKCqLJqTfn0ktm38O1DO8HqK5PNh1L/hD8Ned/8qwYGvMyUbDXwxx9Q+/hhOcL iRsQ== 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=yP0NxR+ewsh6lO+f40jhqfPj7/XkFgz/Vnky0yVkpPk=; b=0U/ykmP5BbK+7itmN6tegzGxoVyJLRULBiyEXnXz34QDpJuhRLRmfxjZEQ2PIu4Shj Vfe2LGnAjSUf7wzzy3sL3WEpzflbor/nARBpEsi0wFZsE0rAPGsm6yV4QYCM7RLXJGaX clxn1BztChAufBeQkuhNHgZ3PeLg61c6A7nPYhJ/j74jF9QCeeYanwThsPncFyBcM/5C 1/u9x3QVBj6gHs9kLh2BWCHQVK25w0k8GWBeKXSTA4Uk+9GrwU9DUJDOUs76GibwUS6j HZA0KP1Lf8S9xgFxS8QRvEQdzaGWaKM3kWidBLeej4vVG5oAdO6LArwYWQ+sUEbdhh/A pBwA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=e1LLTFj8; 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 w23si17869018otp.109.2019.12.29.10.18.56; Sun, 29 Dec 2019 10:19:06 -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=e1LLTFj8; 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 S1727460AbfL2RW7 (ORCPT + 99 others); Sun, 29 Dec 2019 12:22:59 -0500 Received: from mail.kernel.org ([198.145.29.99]:39912 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727445AbfL2RW4 (ORCPT ); Sun, 29 Dec 2019 12:22:56 -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 490BD21744; Sun, 29 Dec 2019 17:22:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640175; bh=91vvcdX+0hMfJZVORuLc6wL3UNlL+IYuBxoelPw28Jw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e1LLTFj8/aKrsZWxyHA3t/NjJM5COoyh3sPzaRz8uKOukalrsJV6J41MpPKdYhXic Prpb9FBMW0YwXT1AXpkup7Kr1L1qPW+1ozWpK3GcgSUtbn/pTtf9/MqnBXOczy3tO9 tb74i5VKKBHfhTeaaXL65sIO5rAievs1SHJgbcBE= 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.14 050/161] media: ti-vpe: vpe: Fix Motion Vector vpdma stride Date: Sun, 29 Dec 2019 18:18:18 +0100 Message-Id: <20191229162413.726378197@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162355.500086350@linuxfoundation.org> References: <20191229162355.500086350@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 45bd10544189..19c0a2614635 100644 --- a/drivers/media/platform/ti-vpe/vpe.c +++ b/drivers/media/platform/ti-vpe/vpe.c @@ -1044,11 +1044,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; @@ -1075,6 +1078,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) @@ -1086,7 +1090,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); } @@ -1105,10 +1109,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; @@ -1135,6 +1142,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) { /* @@ -1170,10 +1178,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