Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp673426ybh; Tue, 10 Mar 2020 06:15:24 -0700 (PDT) X-Google-Smtp-Source: ADFU+vu7PR6PNVhQZeXX6Dbx1HjirgiDC8RL6aZ8kdjKJ3fAnnxkGMHk7zU1D+TWN9hrFztMpmif X-Received: by 2002:a05:6808:8:: with SMTP id u8mr1046551oic.37.1583846124321; Tue, 10 Mar 2020 06:15:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583846124; cv=none; d=google.com; s=arc-20160816; b=EmcimrMxlAl1RKNRWT/pQFdMZfXq5uCRlUxzbIG/khXLXtWfsOFZPfNoZ155iuM+S+ xnkGSkAqeCpBbp41nX6L0kf0rCrHSfZ2S8pP37z9jvm/TiCExBLldF2+b9YfYZxNykXK 4pY7DE56lzJeBS6BrGom58bAK3Vg7tiQSjtODCUPBnoO/gG6D3tDEhlZZxaogHg5B1YX DSce8MT/K1BizaWAYLgV/qrOtf+W98yQb/OYe0cvQN1AI1L00J9cW4Iw8y8Alg2Y1MFV mRj9FYSUSNtrncRZwTivktnudbRJRCYiaq3L1qjwBq84nqLroGmaGcIh12itoh7ITDA/ 0Aww== 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=chUs5F2pOe3kpu54n/Yj9u+X5sw/0n53h+c72JiH+pM=; b=nAHq2hRtTBFe+Qzo0rL2N7YHDBeGDW7Htdd0p5LRNxW+0fYsQo3fOEZcB0PxLvwYld GJvH3U6YTMOueAfXPCPy06p650thalpkRXBcBYcGFog9GbV/zeFK25NE7cxYRQ5XQFYE hhlxl8KUr8s6TSf3Sr8jrfgw6MJNDJ3UsZ58y6/0/elYdfHcQBb3PPb6r7MPgezia4TW D5bUsZjF86dOzSxBT2ms2ElkOfq7SXlHw9L4wtArMpVygRLSKFqe841BSfkiF57g14JZ GZtcqw8cLwiCkbTrRAFM0SQqm5XBu2Dqhi87HdIsQ1kJ2Jja4u+OOHTsRuXGuMN+dXzw BODA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=kQCoSWXf; 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 w25si3099425otp.288.2020.03.10.06.15.11; Tue, 10 Mar 2020 06:15:24 -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=kQCoSWXf; 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 S1731742AbgCJNNk (ORCPT + 99 others); Tue, 10 Mar 2020 09:13:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:36384 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731722AbgCJNNd (ORCPT ); Tue, 10 Mar 2020 09:13:33 -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 34FA220409; Tue, 10 Mar 2020 13:13:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583846012; bh=FLADw+GKBExK9ezf3kJ+0wVCGT6MykYNqQ0rey0KKok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kQCoSWXfKsXbXdACrz1kOxN1hZVYiuIUlCeIw7SdDJU7FZCTPrtgipdJugYvxv2eO jEdr+z0AEVObokV6tcPUtawYILCvKfwX4QgR7pDdaHM/2KvUzqjt0HidENplXYbVKV o6vl7eIZ1srJvIIRgEQb87UGpydalZYqJ8auaLWA= 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 4.19 54/86] dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list Date: Tue, 10 Mar 2020 13:45:18 +0100 Message-Id: <20200310124533.710299227@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200310124530.808338541@linuxfoundation.org> References: <20200310124530.808338541@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 @@ -288,7 +288,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;