dmaengine: fsl-edma: disable clks on all error paths
authorAndreas Platschek <andreas.platschek@opentech.at>
Thu, 14 Dec 2017 11:50:51 +0000 (12:50 +0100)
committerVinod Koul <vinod.koul@intel.com>
Fri, 15 Dec 2017 04:23:04 +0000 (09:53 +0530)
commit2610acf46b9ed528ec2cacd717bc9d354e452b73
tree733c7ce8d442dbc9661af16f7e768d35a0f70a53
parenteb9436966fdc84cebdf222952a99898ab46d9bb0
dmaengine: fsl-edma: disable clks on all error paths

Previously enabled clks are only disabled if clk_prepare_enable() fails.
However, there are other error paths were the previously enabled
clocks are not disabled.

To fix the problem, fsl_disable_clocks() now takes the number of clocks
that shall be disabled + unprepared. For existing calls were all clocks
were already successfully prepared + enabled, DMAMUX_NR is passed to
disable + unprepare all clocks.

In error paths were only some clocks were successfully prepared +
enabled the loop counter is passed, in order to disable + unprepare
all successfully prepared + enabled clocks.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Andreas Platschek <andreas.platschek@opentech.at>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/fsl-edma.c