Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp3417901pxy; Mon, 26 Apr 2021 00:57:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzrl64pJXMuB6aTgGZb7gz1Dkoy7qKeqXoW3LpoT0yAgB0QPXIBXwfjbMr7KJQPpEuPg3QZ X-Received: by 2002:a05:6a00:be2:b029:258:834c:cdc9 with SMTP id x34-20020a056a000be2b0290258834ccdc9mr16473671pfu.54.1619423877174; Mon, 26 Apr 2021 00:57:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619423877; cv=none; d=google.com; s=arc-20160816; b=uAIfBJExnrXe6L9G9rzmgupz1+iyclGLosS8QEZaJjC6yEC438w0YwicIxEz3fDt62 XyBYsYe14PkxtuHRgJoJw4Sl8XL68/N16FfvdkFdNQ6HFX92NwQNEP8znMxUTkfKOpEO tBntFXfh/PFwUE2/NJDsTuzfqu7aiST6guV+eD9IRpZCG0sLrtApNgILEQqQ/cjcEtrg JV8QxkZLcdRf37cAvYBZ0lIWetsZpP23lTLg7ryRx3TF6Lq7mBHliVl5gj6UChoPItTY 6jyqK/qmSqxY3agGVjRu4ifsr1M/Y7O2w4ZcTEmX/sIHwQZDDHu8Gts2pTDVwglbS34M xh8Q== 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=gDCC6PwNqIsMjfjWATC2JsKZcLKHUYK27/p6v0njS2k=; b=MPc/nUJZHmtchsNeUjRcXojgY9esAx7phP3KsW7BR/yKH9e4drhz0RIj6qyOCHspF/ Q6j2aZ9OBOa6sM/UF6YhrzydG+Yto8iqOR0G3HExkkkt302GuqholdAvacngY1fWB9Hx yMbQa4j6BMvrZsY2C9YrB9hgK4kxT9hnPpPvhBH5Q/2ZvTOZQtGt/r3XlmdIx+axNZ11 rpSMyeVEO3ybEF06TrYXexmmpUAaGDuntEUrZchjyCawe04d/CibyPayK5lnfqUQQMoF dVb1K1xuJ819q3p2pggZ9Ci84lmh/4UMMyR5IjPdj57zHOHvso+zlyni9IB8UnZgC4Ya 4IKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=v03I6YM6; 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=pass (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 f18si16390510plg.218.2021.04.26.00.57.45; Mon, 26 Apr 2021 00:57:57 -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=@linuxfoundation.org header.s=korg header.b=v03I6YM6; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237891AbhDZH4K (ORCPT + 99 others); Mon, 26 Apr 2021 03:56:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:34640 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234264AbhDZHpF (ORCPT ); Mon, 26 Apr 2021 03:45:05 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id DCF0561168; Mon, 26 Apr 2021 07:42:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1619422925; bh=OfTZhQVCkfP1iUoe6FXBgYEwvVROmP5JhRAWr8lWs4c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=v03I6YM6FSyQR3YNNTUWLJN1YWR0RSLKIDKDtIbOnr7t56afvi1wfdua12GiwY1mM i8uMGZEQ6dm5vUciUlr8mixKhof/WIVQ7YTlpw0ica/FA/aL2ltNRBN40VBytlpu2K 0wG6ntc5K/H7rjx4MnXFgrxMTsb5UpUYReVk7QrM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Laurent Pinchart , Vinod Koul , Sasha Levin Subject: [PATCH 5.11 29/41] dmaengine: xilinx: dpdma: Fix race condition in done IRQ Date: Mon, 26 Apr 2021 09:30:16 +0200 Message-Id: <20210426072820.687194792@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210426072819.666570770@linuxfoundation.org> References: <20210426072819.666570770@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: Laurent Pinchart [ Upstream commit 868833fbffbe51c487df4f95d4de9194264a4b30 ] The active descriptor pointer is accessed from different contexts, including different interrupt handlers, and its access must be protected by the channel's lock. This wasn't done in the done IRQ handler. Fix it. Signed-off-by: Laurent Pinchart Link: https://lore.kernel.org/r/20210307040629.29308-3-laurent.pinchart@ideasonboard.com Signed-off-by: Vinod Koul Signed-off-by: Sasha Levin --- drivers/dma/xilinx/xilinx_dpdma.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/dma/xilinx/xilinx_dpdma.c b/drivers/dma/xilinx/xilinx_dpdma.c index d504112c609e..70b29bd079c9 100644 --- a/drivers/dma/xilinx/xilinx_dpdma.c +++ b/drivers/dma/xilinx/xilinx_dpdma.c @@ -1048,13 +1048,14 @@ static int xilinx_dpdma_chan_stop(struct xilinx_dpdma_chan *chan) */ static void xilinx_dpdma_chan_done_irq(struct xilinx_dpdma_chan *chan) { - struct xilinx_dpdma_tx_desc *active = chan->desc.active; + struct xilinx_dpdma_tx_desc *active; unsigned long flags; spin_lock_irqsave(&chan->lock, flags); xilinx_dpdma_debugfs_desc_done_irq(chan); + active = chan->desc.active; if (active) vchan_cyclic_callback(&active->vdesc); else -- 2.30.2