Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3762327pxk; Tue, 29 Sep 2020 05:47:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx6zfvRwBlOmBVFuIJ7hqTgfCTmYMeAwQGsVqHuVGw1gGQWD+9RPuyH0+8C/K2mJAP1jFWL X-Received: by 2002:a05:6402:1212:: with SMTP id c18mr2998683edw.344.1601383634389; Tue, 29 Sep 2020 05:47:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601383634; cv=none; d=google.com; s=arc-20160816; b=rLy31ZeZ8+3GU0BeH7JreNR2W9tmC3DKF12N9z6gax8sVnRM9jpLRXaEW52mNHa+ia NPfy3IZPP/W+rM1f0SYI6Det+vm+iTqijjuHmso2rJFrHXoCX4CGAQrJtUz9sUF7RzcT DAKtmXgvSrjYRtYUHw2TVu92gNj9R1v3UIm6ETEZAy7MtJd5tqMTZ/wrZPxiLD0eadx7 LLicU+KktcFOdyhIp9y2xWTMFJCPwxBN/4hGAOb0pZhOjh2BKkRe0ifL/oNPgFupU/lm wuXwTgpDjo2ZPhg4+KOPuNtw+fA/oAhbuCe+HIQoSf5qFOupvycz5dixrTSsWqBlMtm8 +X8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+GzpKA1vYnnb58OfxufIuDJoVgawO85mhN88k1QvpWU=; b=ppIGerQjJqPEi4LpZMj7Xoxep5SyEF4xjMXysIxJYfabJ7ipp0v3sjpBmTN4rw08R0 /ul08Dn8Mrsf2P2BYUVBk9VZHEAoA7fSaQDBWLWLpa8wnI8qaEzyPsLajRHscRXkUREy Ian+zItafUuFa/gksIE68MszDfGhpfBKiAbQYmgpI7AW8MwbGjqQKrsHs0s7yETnurtc ROlFLd4aAv5zYKKFhfnOpOVsl/ygMClQ3Iv9pdOXxrTmlgNzkYJIe4w0TzUViZ8tFgz8 zuFnjDDtf6gSTxQnZU0rsPeWDJUbUXH3NIEvKUzvyg5DImJoo6Uhm9axJOPCucf4RwF/ PqFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=c6n50FkV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c8si2598401ejx.605.2020.09.29.05.46.51; Tue, 29 Sep 2020 05:47:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=c6n50FkV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733284AbgI2Mnz (ORCPT + 99 others); Tue, 29 Sep 2020 08:43:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:49818 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728238AbgI2LJa (ORCPT ); Tue, 29 Sep 2020 07:09:30 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 BE04A21D7F; Tue, 29 Sep 2020 11:09:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601377769; bh=CRsjg3TOysFEb6PVC+Iq4aSMLT6JDEkSutZn15IF4Dg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c6n50FkVq4xQAWyxweEez3ywVOkNZV/x8gNJhSLJaufTUsfihKPDoXf4WR7eQoaxi xXtGeHV2m14sdgbgQclGt/xrNnjngg0tx5IRNWohBf4+l7/j34lbXqRT+AKad6KMx/ WZbFNiShjOjoChe3Kaufy+KP0BLQmLS1RiGNiEwA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vignesh Raghavendra , Sasha Levin Subject: [PATCH 4.9 066/121] serial: 8250: 8250_omap: Terminate DMA before pushing data on RX timeout Date: Tue, 29 Sep 2020 13:00:10 +0200 Message-Id: <20200929105933.439485483@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200929105930.172747117@linuxfoundation.org> References: <20200929105930.172747117@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vignesh Raghavendra [ Upstream commit 7cf4df30a98175033e9849f7f16c46e96ba47f41 ] Terminate and flush DMA internal buffers, before pushing RX data to higher layer. Otherwise, this will lead to data corruption, as driver would end up pushing stale buffer data to higher layer while actual data is still stuck inside DMA hardware and has yet not arrived at the memory. While at that, replace deprecated dmaengine_terminate_all() with dmaengine_terminate_async(). Signed-off-by: Vignesh Raghavendra Link: https://lore.kernel.org/r/20200319110344.21348-2-vigneshr@ti.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/tty/serial/8250/8250_omap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c index 7d4680ef5307d..d41be02abced2 100644 --- a/drivers/tty/serial/8250/8250_omap.c +++ b/drivers/tty/serial/8250/8250_omap.c @@ -773,7 +773,10 @@ static void __dma_rx_do_complete(struct uart_8250_port *p) dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state); count = dma->rx_size - state.residue; - + if (count < dma->rx_size) + dmaengine_terminate_async(dma->rxchan); + if (!count) + goto unlock; ret = tty_insert_flip_string(tty_port, dma->rx_buf, count); p->port.icount.rx += ret; @@ -811,7 +814,6 @@ static void omap_8250_rx_dma_flush(struct uart_8250_port *p) spin_unlock_irqrestore(&priv->rx_dma_lock, flags); __dma_rx_do_complete(p); - dmaengine_terminate_all(dma->rxchan); } static int omap_8250_rx_dma(struct uart_8250_port *p) -- 2.25.1