Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp999479imu; Fri, 4 Jan 2019 11:01:52 -0800 (PST) X-Google-Smtp-Source: AFSGD/UfnQKfDGdbu3i7+kmqWfsFWgG7TJXVRG5PZVf6lUySu8ViePgf9PwdjYmLHlLofP8Win2l X-Received: by 2002:a62:35c7:: with SMTP id c190mr54884293pfa.76.1546628511964; Fri, 04 Jan 2019 11:01:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546628511; cv=none; d=google.com; s=arc-20160816; b=GpVHUxmMj6J/uCZKBBopGKLdu3ooqbU1R61em2NUFGwzMWV3SPjUDF1k04TjvRI0Gt wVz1z3znS+7nISKWhJhet7GBQSgtsxZYunJSbFrB6kuUjzxC9PojQQUt6Ewgp30Iw/wh 6WnAjT8ptzJQrFiEJBTP15xEOi+FTRP9Y85cZXIu2eanq/jIe5saUCQaAEVMNWskFVbH aEyR0Wmm7b0gmAsRkHjUBo/VArU8cOTi2K2+LU0icjO6eQBRpnwTNZ3vo9FaMGqJfdFM DKy+itozXI9fS/C0rvcSUBejVZx52krlNd02nzZdig9vVg0vnYtTRZAvX658whTp4YrN hdHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=a/XkKqfZs7PUIdUA6q7O0Q6eV0cs2jK38aBHT/gxL9I=; b=GUAFLgyKrcOcirJs0PzlpbGef8S+dLhdYAPa88cYWirEuzMONRHO8+FDG9EBe7DF+S HVBfl8C4pTH8jY8oXUuiD/DULsbIAQtDAuz29PMLHi5EvvD20LsiN6o/eZPVZInra2oR W37lIgdleZy/85A9825YSnBdCMFvvG9MkoBql1pYiJWkFi4IbhwPVD/3C/R/04wQobtj Ca+LC5Lu21FFG83gZDhcHBWyXsi4syoDVSfnkmjNPTwrYFNps0IMWuSkDqNnisTQkEQP usquRW5hzxU6Fg4S1TZPD9QI0EIswDWYWOyxXdpATm/wB/hhkeS0Lzr9Upr4/av9qSLo vu0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sYjr0eoy; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n1si55013944pgh.172.2019.01.04.11.01.37; Fri, 04 Jan 2019 11:01:51 -0800 (PST) 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=sYjr0eoy; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728456AbfADRdE (ORCPT + 99 others); Fri, 4 Jan 2019 12:33:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:59772 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727230AbfADRdD (ORCPT ); Fri, 4 Jan 2019 12:33:03 -0500 Received: from localhost (unknown [49.207.53.230]) (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 3376B218CD; Fri, 4 Jan 2019 17:32:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1546623183; bh=6UJumnS8wZ3Fe5ZJrXjNWL1o0unjWmWWV3ERjneOztM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=sYjr0eoyctmXnqT7inJ+xRVrFuH5V5Qot4uwYa2XL0UZHQow0bKUPgdsuSQRyqYBR aB40YSogckNRsXnulpGFUCsLNjy60IID3g8MVy+7nOLEWrIb9Z3moVtTPZR8eMKOkS 23RWushw2Suirl0UrDHw6g8KVon4rJtZ5jq4kZwM= Date: Fri, 4 Jan 2019 23:01:11 +0530 From: Vinod Koul To: Shunyong Yang Cc: okaya@kernel.org, andy.gross@linaro.org, david.brown@linaro.org, dan.j.williams@intel.com, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Joey Zheng Subject: Re: [PATCH 2/2] dmaengine: qcom_hidma: assign channel cookie correctly Message-ID: <20190104173111.GS13372@vkoul-mobl.Dlink> References: <81c9fe2de4b5dac1d5b974f5305e35bf1cf5d127.1544156508.git.shunyong.yang@hxt-semitech.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07-12-18, 12:29, Shunyong Yang wrote: > When dma_cookie_complete() is called in hidma_process_completed(), > dma_cookie_status() will return DMA_COMPLETE in hidma_tx_status(). Then, > hidma_txn_is_success() will be called to use channel cookie > mchan->last_success to do additional DMA status check. Current code > assigns mchan->last_success after dma_cookie_complete(). This causes > a race condition of dma_cookie_status() returns DMA_COMPLETE before > mchan->last_success is assigned correctly. The race will cause > hidma_tx_status() return DMA_ERROR but the transaction is actually a > success. Moreover, in async_tx case, it will cause a timeout panic > in async_tx_quiesce(). > > Kernel panic - not syncing: async_tx_quiesce: DMA error waiting for > transaction > ... > Call trace: > [] dump_backtrace+0x0/0x1f4 > [] show_stack+0x24/0x2c > [] dump_stack+0x84/0xa8 > [] panic+0x12c/0x29c > [] async_tx_quiesce+0xa4/0xc8 [async_tx] > [] async_trigger_callback+0x70/0x1c0 [async_tx] > [] raid_run_ops+0x86c/0x1540 [raid456] > [] handle_stripe+0x5e8/0x1c7c [raid456] > [] handle_active_stripes.isra.45+0x2d4/0x550 [raid456] > [] raid5d+0x38c/0x5d0 [raid456] > [] md_thread+0x108/0x168 > [] kthread+0x10c/0x138 > [] ret_from_fork+0x10/0x18 > > Cc: Joey Zheng > Signed-off-by: Shunyong Yang > --- > drivers/dma/qcom/hidma.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c > index 9d639ed1955a..aa88bcceda20 100644 > --- a/drivers/dma/qcom/hidma.c > +++ b/drivers/dma/qcom/hidma.c > @@ -138,24 +138,24 @@ static void hidma_process_completed(struct hidma_chan *mchan) > desc = &mdesc->desc; > last_cookie = desc->cookie; > > + llstat = hidma_ll_status(mdma->lldev, mdesc->tre_ch); > + > spin_lock_irqsave(&mchan->lock, irqflags); > + if (llstat == DMA_COMPLETE) { > + mchan->last_success = last_cookie; > + result.result = DMA_TRANS_NOERROR; > + } else > + result.result = DMA_TRANS_ABORTED; Coding style mandates that else should also have braces, please fix that -- ~Vinod