From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D464C31E4B for ; Fri, 14 Jun 2019 20:39:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CE8B62084D for ; Fri, 14 Jun 2019 20:39:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560544762; bh=h6DRz8peL2BXbXkkK36S6N4w4/4bEu/ErJcl08BVaZc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=Sd2KgtJg5RCv+mXu+rLRIQPq3RkasZBgA/ANeG01iz2n9s8SjrY3my4Gzld4rUwoa ctyJbFfDMVy0QNqIhhV+J934dE0N2kXAP8qZygXSyntWF4sm4fYkqh4CCTG/DH99pw BUdZPcFRkBQARs0c7sIOw6i8dJPWd+qX+arcjkGA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727622AbfFNUjW (ORCPT ); Fri, 14 Jun 2019 16:39:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:50414 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726388AbfFNU2v (ORCPT ); Fri, 14 Jun 2019 16:28:51 -0400 Received: from sasha-vm.mshome.net (unknown [131.107.159.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6504B2184E; Fri, 14 Jun 2019 20:28:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560544130; bh=h6DRz8peL2BXbXkkK36S6N4w4/4bEu/ErJcl08BVaZc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ap1n6SCxQ2U3mZpEkAByx96CMXSWZ6yOf44mop0kVWk+gx7VdfaBwVXEebGSMhCkE +wujxfMkATrIVztvWYPWOoG0NsrbIcgiBNks8arqEOXlza3LK0mYAv0eY7pcoAFV1X xLjHt2cmySB9zeSeokq9Inv6aIs6+b06cv2Hvq5c= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Baolin Wang , Vinod Koul , Sasha Levin , dmaengine@vger.kernel.org Subject: [PATCH AUTOSEL 5.1 06/59] dmaengine: sprd: Fix the possible crash when getting descriptor status Date: Fri, 14 Jun 2019 16:27:50 -0400 Message-Id: <20190614202843.26941-6-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190614202843.26941-1-sashal@kernel.org> References: <20190614202843.26941-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org From: Baolin Wang [ Upstream commit 16d0f85e45b99411ac10cb12cdd9279204a72381 ] We will get a NULL virtual descriptor by vchan_find_desc() when the descriptor has been submitted, that will crash the kernel when getting the descriptor status. In this case, since the descriptor has been submitted to process, but it is not completed now, which means the descriptor is listed into the 'vc->desc_submitted' list now. So we can not get current processing descriptor by vchan_find_desc(), but the pointer 'schan->cur_desc' will point to the current processing descriptor, then we can use 'schan->cur_desc' to get current processing descriptor's status to avoid this issue. Signed-off-by: Baolin Wang Signed-off-by: Vinod Koul Signed-off-by: Sasha Levin --- drivers/dma/sprd-dma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c index 48431e2da987..e29342ab85f6 100644 --- a/drivers/dma/sprd-dma.c +++ b/drivers/dma/sprd-dma.c @@ -625,7 +625,7 @@ static enum dma_status sprd_dma_tx_status(struct dma_chan *chan, else pos = 0; } else if (schan->cur_desc && schan->cur_desc->vd.tx.cookie == cookie) { - struct sprd_dma_desc *sdesc = to_sprd_dma_desc(vd); + struct sprd_dma_desc *sdesc = schan->cur_desc; if (sdesc->dir == DMA_DEV_TO_MEM) pos = sprd_dma_get_dst_addr(schan); -- 2.20.1