Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp4437397imm; Mon, 8 Oct 2018 22:49:03 -0700 (PDT) X-Google-Smtp-Source: ACcGV60/LMkWz453+gZs3GnbQLt5moFpRSqC1M6IHvaKqT/reLfF8e6PXyHUY7mDCj70sxmqjfWe X-Received: by 2002:a17:902:d01:: with SMTP id 1-v6mr27463255plu.88.1539064143017; Mon, 08 Oct 2018 22:49:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539064142; cv=none; d=google.com; s=arc-20160816; b=AroU2TEj/Zs75hCcPjcTvuKTnyOh74DjkLiMJF969ZSVxKgn0Tzg1BFhvtaa4sr+le zlZMhM5UPUc/IGQRnQwd7qOlLLBh+Pa3TeTe41fKCWwnXDqbDBGHmrH1Ms5Mmjj1DaMm Zy9Lep1ZJVDl2cbRm814pETtR3tpKaje6UyrzNz1UjC0X41GsodbKEjZKLyhGsywMiiY cmDIzyWYmdVurzJBnbsF6O6ZOjKoepGEHF0AdhNA6IbuwVOVgu6jT+R3P9UKlYu4c/Dz FNMuscno7kWF/f03iGqu+wRGW5A6ZaR4qlOG46rvR/yDH18hdmiAbuxf4VTFdH9ay0i0 DUmQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=z23Tjh1yqMbwhE8WbL7Mv5Y/M073KHw3jtyb5qocoBQ=; b=1H3ND20HwT6EQtelHqRg6AKH45sacBhG83PdtdJ+mmTWxKGCqqcyW82Wt0aVzTGpme nSaBAsh9UFoVJXt+ZxSozCnhmd8wtYsghLSu6PYqftM2Ydy3yxZBSeDUBOSE0DEROT7x tVDQvGG7lk56Dqr0i1Xm6nd04cTbkzt4LlnWRVo77xohxU+Gtr7A1wm9Q9XfvwO4mTZS P/lBhpXdBSZD6n+a2mSOM4XaGT9OBBLpXk/4AOjJbjo0KCw6QHwRcXcK7wRODzn9qKYo oV/bJzmgjkYq/ujKjqyXqmhYQ9hZxfiJRN8Uhx8AhNjrkvX2cnbxntZ6BxneOfFkjG8E R3WA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=PbZ1lIJy; 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 u21-v6si19225432pgm.406.2018.10.08.22.48.48; Mon, 08 Oct 2018 22:49:02 -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=@joelfernandes.org header.s=google header.b=PbZ1lIJy; 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 S1726849AbeJINDb (ORCPT + 99 others); Tue, 9 Oct 2018 09:03:31 -0400 Received: from mail-pl1-f195.google.com ([209.85.214.195]:40022 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726747AbeJINDa (ORCPT ); Tue, 9 Oct 2018 09:03:30 -0400 Received: by mail-pl1-f195.google.com with SMTP id 1-v6so243304plv.7 for ; Mon, 08 Oct 2018 22:48:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=z23Tjh1yqMbwhE8WbL7Mv5Y/M073KHw3jtyb5qocoBQ=; b=PbZ1lIJyVyyh3yI53kRy/FLEntyL9v3ClQWBuhzRBKXg78LnoAVfyWFgPJzoIA6L/w w3MOu5KXNdANYv8/7appfJ6EQUa/pkPyPQM50A8cZ1HiwJB6zKHRuhdXLtIkkQmOqYDh LLrEUvZiKGrnGhEON+CkLddhpseaIKTjZOK9Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=z23Tjh1yqMbwhE8WbL7Mv5Y/M073KHw3jtyb5qocoBQ=; b=GLAoQHr3iwProQLw1YAtmKCE4mgfkBAOnCO/3zKiiBEzVcBDdihgHwrHWKND+FPUL5 vK8UmGYLNTlUrSRKHEDtT4fZ0jDkl3ocvcOY11kZsRccQWbfAK/x8nG+FUnlaj/NmR+U TU8C5VxocY9Apzq8gO19cTO/VTHebFt0AfRqdInp2vVBJWGfBf7fBpx3baIpqxtKW12+ 8OIEroBMp5BHEzvpQ7SVS4RnCYQYL+35S70Q3sL1BeTXSM2qjKRsrZUKItNZKStLiuIf 5lXMwK9ddhk1DtuNxNor6CM4cdm2vEpk89JW/O23g6qwFskMBbnSdTJq91jALxWcLVq+ hnEg== X-Gm-Message-State: ABuFfohfkHoQdcGgTy6TdYZiCO8lvISgT8Co82vVyGGNCY+BSHfw5aii EhfGNYTSW0w2go5eilCRZnld2Q== X-Received: by 2002:a17:902:50e3:: with SMTP id c32-v6mr26734108plj.194.1539064097457; Mon, 08 Oct 2018 22:48:17 -0700 (PDT) Received: from joelaf.mtv.corp.google.com ([2620:0:1000:1601:3aef:314f:b9ea:889f]) by smtp.gmail.com with ESMTPSA id a15-v6sm16886234pff.8.2018.10.08.22.48.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Oct 2018 22:48:16 -0700 (PDT) From: "Joel Fernandes (Google)" To: stable@vger.kernel.org Cc: Pierre Yves MORDRET , Antonio Borneo , Vinod Koul , gregkh@linuxfoundation.org, Alexandre Torgue , Dan Williams , dmaengine@vger.kernel.org, "Joel Fernandes (Google)" , linux-arm-kernel@lists.infradead.org (moderated list:ARM/STM32 ARCHITECTURE), linux-kernel@vger.kernel.org, Maxime Coquelin Subject: [PATCH 7/7] dmaengine: stm32-dma: properly mask irq bits Date: Mon, 8 Oct 2018 22:47:52 -0700 Message-Id: <20181009054752.145978-8-joel@joelfernandes.org> X-Mailer: git-send-email 2.19.0.605.g01d371f741-goog In-Reply-To: <20181009054752.145978-1-joel@joelfernandes.org> References: <20181009054752.145978-1-joel@joelfernandes.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pierre Yves MORDRET A single register of the controller holds the information for four dma channels. The functions stm32_dma_irq_status() don't mask the relevant bits after the shift, thus adjacent channel's status is also reported in the returned value. Fixed by masking the value before returning it. Similarly, the function stm32_dma_irq_clear() don't mask the input value before shifting it, thus an incorrect input value could disable the interrupts of adjacent channels. Fixed by masking the input value before using it. Signed-off-by: Pierre-Yves MORDRET Signed-off-by: Antonio Borneo Signed-off-by: Vinod Koul --- drivers/dma/stm32-dma.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/dma/stm32-dma.c b/drivers/dma/stm32-dma.c index 05a2974cd2c0..8c5807362a25 100644 --- a/drivers/dma/stm32-dma.c +++ b/drivers/dma/stm32-dma.c @@ -38,6 +38,10 @@ #define STM32_DMA_TEI BIT(3) /* Transfer Error Interrupt */ #define STM32_DMA_DMEI BIT(2) /* Direct Mode Error Interrupt */ #define STM32_DMA_FEI BIT(0) /* FIFO Error Interrupt */ +#define STM32_DMA_MASKI (STM32_DMA_TCI \ + | STM32_DMA_TEI \ + | STM32_DMA_DMEI \ + | STM32_DMA_FEI) /* DMA Stream x Configuration Register */ #define STM32_DMA_SCR(x) (0x0010 + 0x18 * (x)) /* x = 0..7 */ @@ -405,7 +409,7 @@ static u32 stm32_dma_irq_status(struct stm32_dma_chan *chan) flags = dma_isr >> (((chan->id & 2) << 3) | ((chan->id & 1) * 6)); - return flags; + return flags & STM32_DMA_MASKI; } static void stm32_dma_irq_clear(struct stm32_dma_chan *chan, u32 flags) @@ -420,6 +424,7 @@ static void stm32_dma_irq_clear(struct stm32_dma_chan *chan, u32 flags) * If (ch % 4) is 2 or 3, left shift the mask by 16 bits. * If (ch % 4) is 1 or 3, additionally left shift the mask by 6 bits. */ + flags &= STM32_DMA_MASKI; dma_ifcr = flags << (((chan->id & 2) << 3) | ((chan->id & 1) * 6)); if (chan->id & 4) -- 2.19.0.605.g01d371f741-goog