Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp661070ybh; Tue, 10 Mar 2020 06:04:39 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvBNBAHPrRsPf7++k9rjdB1tw/SzTVmuA+BWnqMN6/p+O+GQaghPACBbOBhzZTLKnLvRlzk X-Received: by 2002:aca:c415:: with SMTP id u21mr1044212oif.49.1583845478829; Tue, 10 Mar 2020 06:04:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583845478; cv=none; d=google.com; s=arc-20160816; b=SQq++9TZNUOvFnPmeebtwPitYd68kpVOUcpE13rU/kepZpk6UuSeNQuwogiqqOWGcG uOVKsVSoGS/gqgHT8Xo3Y2XuHgOZ0MlqfDbl6s2cQzDZeGt7n3KAYeK/IUIPTDwvH0rq pOUOlCTyLnZkGiLkIyb5gqUSUPWKR5rJn+qo3MknN1ZnfWKougqrfz5LqjiMV/mYIpFg 090fWsZn0zRQfQ2qb1XT7ns+mHn7t1a9e25L9ePDXFqy2rFyvIQ3rl+CHN3FzfgSE95+ cBfPv9fxVIWhKCGVTwaehowB8jJqUU21GAcbddIDVnasg529Tt+yn6lysZwrx3yNXGIs u2kw== 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=GOK35DY+558EHkr8KEicd2WUxKO4B2WiDEfNMuvFh04=; b=sfXdbTH1N4LQOSVfLUf0iz8vH+zYBXhgmESVOdj12qvOsuqe+tDGn8pFyd0jG3lP4c iLOxQXspJBXsBjuQlCb4MymlO/UE2xAuM7xdQjOyNiD8U5gHZv1KVnuxZPedMVP/uWWe uxGB9ntMRs69OUIG0ifRyBC148sSwDXw6SiFkp0V+eSJu/7bTdA9h22/jI5MEcGwCG5A YBL6XCOm2oEeSK2vEeZl7Tiuj72xqeTzEg9/tkTiXiHRSFphyZaLJ80zF0Sjo1YLlv/j DDiaD5dZo1Z18qljZTqoFVru49TtcxYlzj7seqSSS2IgkX3VMdalNjy+2RLbu/NprdPB kvHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BUf4LIz2; 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 c15si7690933otr.206.2020.03.10.06.03.50; Tue, 10 Mar 2020 06:04:38 -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=BUf4LIz2; 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 S1730377AbgCJNCM (ORCPT + 99 others); Tue, 10 Mar 2020 09:02:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:44314 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730372AbgCJNCL (ORCPT ); Tue, 10 Mar 2020 09:02:11 -0400 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 8E173208E4; Tue, 10 Mar 2020 13:02:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583845331; bh=vTWBqDRsC/tFRPDMOCq60Nxj2V6mOLrWJm0saUVbkdQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BUf4LIz2rCGH+OI0w7J6oTH19U/i88akmZsa/yB2S4/dBx0dgTjeygmDzxfDJi4gm IWxM3SeCjeugb5bkfJjHpsORBYd3SwA3gP+XMLTXAhS5r84Li44kFvm8pNfl6nROlw uqnMAJXTW2CMsJcGf5RyT6wcRt9Ltu+TL8R4VdNc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dmitry Osipenko , Jon Hunter , Vinod Koul Subject: [PATCH 5.5 117/189] dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list Date: Tue, 10 Mar 2020 13:39:14 +0100 Message-Id: <20200310123651.562676947@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200310123639.608886314@linuxfoundation.org> References: <20200310123639.608886314@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: Dmitry Osipenko commit c33ee1301c393a241d6424e36eff1071811b1064 upstream. The interrupt handler puts a half-completed DMA descriptor on a free list and then schedules tasklet to process bottom half of the descriptor that executes client's callback, this creates possibility to pick up the busy descriptor from the free list. Thus, let's disallow descriptor's re-use until it is fully processed. Signed-off-by: Dmitry Osipenko Acked-by: Jon Hunter Cc: Link: https://lore.kernel.org/r/20200209163356.6439-3-digetx@gmail.com Signed-off-by: Vinod Koul Signed-off-by: Greg Kroah-Hartman --- drivers/dma/tegra20-apb-dma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/dma/tegra20-apb-dma.c +++ b/drivers/dma/tegra20-apb-dma.c @@ -281,7 +281,7 @@ static struct tegra_dma_desc *tegra_dma_ /* Do not allocate if desc are waiting for ack */ list_for_each_entry(dma_desc, &tdc->free_dma_desc, node) { - if (async_tx_test_ack(&dma_desc->txd)) { + if (async_tx_test_ack(&dma_desc->txd) && !dma_desc->cb_count) { list_del(&dma_desc->node); spin_unlock_irqrestore(&tdc->lock, flags); dma_desc->txd.flags = 0;