Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp3915834imm; Mon, 8 Oct 2018 11:37:52 -0700 (PDT) X-Google-Smtp-Source: ACcGV61+UFehPbozD4G14ro4CDg7nPnOlVxHNI46Siqg+U2peNp0+oi/vlK0zE8K0AhCIUIOjPj0 X-Received: by 2002:a17:902:44:: with SMTP id 62-v6mr25352245pla.181.1539023872388; Mon, 08 Oct 2018 11:37:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539023872; cv=none; d=google.com; s=arc-20160816; b=CBmbEMSosFA336TTRKOKEZQKdu/R0X12VSPc1Ga5vV/bVaw8YnHrRuioNT55xuMW2i MLAVQ2no1+JCgeIwByBHGu9ogPasmvVAXzqpxADxSHWnlUJXwD2KUMS6Pck2A36u9Rn5 MgX9j5CxTIuAOz2QEa70ZG84azpXnjDDeQv0ODlf6KE79zgqspuFm4j7k0+QXqq2Skca fWvvP2Fj2eDG0ifHm98eswtB1oPzdI8j615dZN3YlcwxNHyTRewHz9XxVHfCvYhTY1QL WzAOdzMSJ8hPp2T3VI6sVQufyLjShsgAZPYtjzoX+yGDP4WYNYqLmetApPOOzZAYaxrP 8DHg== 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=Xd5j5I5FhHzErDGmpjmODfVzrFKq6Mflj5r4ImLyScY=; b=UGALOgTNl+DJgOcqp+ZLLZ9ZEfTQ+OrPwSbfJ8nYtVItyIHsZFWeVM4HKyl6uUvdl9 +LQYejSn7wXLc/xZXaOmBaIGbNiqi0Imt5B8bY5ABL+JyJ/LfGCNuOVAMHZSUv7kzQbo aZzeCwbyi512WqhIDp+fZtTPJgnTfYCT6rVBGmDaT3av0AspHDDiB7d+eqGcgLfgShKR c4Anzi/bfMZIWZbEo3XzfUhCaPQ83bA3ff6QSBFoJDAdopy35+YtgdPkPf3/cwCQILPP lmCWcBr4ft4OYoNA/lOpuA/lVXQRRCY17Ml7y49wOnZf2uo8JDha6XSQ4/qUlfzkRTcv hP5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=FHj850cE; 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 h131-v6si15816166pgc.122.2018.10.08.11.37.37; Mon, 08 Oct 2018 11:37:52 -0700 (PDT) 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=FHj850cE; 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 S1728322AbeJIBsi (ORCPT + 99 others); Mon, 8 Oct 2018 21:48:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:32848 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726522AbeJIBsh (ORCPT ); Mon, 8 Oct 2018 21:48:37 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 7F83B2064A; Mon, 8 Oct 2018 18:35:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539023735; bh=HTJIbMqqVt3X6Hcos3y+k9CrBGyshxmY3bsGVdsC4oM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FHj850cEBpyhyDVOp4QeSTd+sP/i4qi5OSVTSVXKI7vcZlyhe00NJHkYCM3fY7bHp K+xOpFSZpsDA1ICL6OafBumvSgf7W3MEEsMXuzBkfFU0YzMJryUupCr1Gk24uIQfsi 4BFSaKW15mBltvopZUegtfTnNifyjW3MwU0U0b7s= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Geert Uytterhoeven , Mark Brown Subject: [PATCH 4.4 049/113] spi: rspi: Fix interrupted DMA transfers Date: Mon, 8 Oct 2018 20:30:50 +0200 Message-Id: <20181008175533.431433219@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181008175530.864641368@linuxfoundation.org> References: <20181008175530.864641368@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Geert Uytterhoeven commit 8dbbaa47b96f6ea5f09f922b4effff3c505cd8cf upstream. When interrupted, wait_event_interruptible_timeout() returns -ERESTARTSYS, and the SPI transfer in progress will fail, as expected: m25p80 spi0.0: SPI transfer failed: -512 spi_master spi0: failed to transfer one message from queue However, as the underlying DMA transfers may not have completed, all subsequent SPI transfers may start to fail: spi_master spi0: receive timeout qspi_transfer_out_in() returned -110 m25p80 spi0.0: SPI transfer failed: -110 spi_master spi0: failed to transfer one message from queue Fix this by calling dmaengine_terminate_all() not only for timeouts, but also for errors. This can be reproduced on r8a7991/koelsch, using "hd /dev/mtd0" followed by CTRL-C. Signed-off-by: Geert Uytterhoeven Signed-off-by: Mark Brown Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/spi/spi-rspi.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- a/drivers/spi/spi-rspi.c +++ b/drivers/spi/spi-rspi.c @@ -587,11 +587,13 @@ static int rspi_dma_transfer(struct rspi ret = wait_event_interruptible_timeout(rspi->wait, rspi->dma_callbacked, HZ); - if (ret > 0 && rspi->dma_callbacked) + if (ret > 0 && rspi->dma_callbacked) { ret = 0; - else if (!ret) { - dev_err(&rspi->master->dev, "DMA timeout\n"); - ret = -ETIMEDOUT; + } else { + if (!ret) { + dev_err(&rspi->master->dev, "DMA timeout\n"); + ret = -ETIMEDOUT; + } if (tx) dmaengine_terminate_all(rspi->master->dma_tx); if (rx)