FAILED: patch "[PATCH] i2c: imx: Fix reinit_completion() use" failed to apply to 4.9-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
9f9e3e0d4dd3338b3f3dde080789f71901e1e4ffMon Sep 17 00:00:00 2001
From: Esben Haabendal <[email protected]>
Date: Mon, 9 Jul 2018 11:43:01 +0200
Subject: [PATCH] i2c: imx: Fix reinit_completion() use
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Make sure to call reinit_completion() before dma is started to avoid race condition where reinit_completion() is called after complete() and before wait_for_completion_timeout().
drivers/i2c/busses/i2c-imx.c +1 -2
@@ -368,6 +368,7 @@ static int i2c_imx_dma_xfer(struct imx_i2c_struct *i2c_imx, goto err_desc; } +reinit_completion (&dma->cmd_complete); txdesc->callback = i2c_imx_dma_callback; txdesc->callback_param = i2c_imx;if (dma_submit_error (dmaengine_submit (txdesc))) {
@@ -622,7 +623,6 @@ static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx,* The first byte must be transmitted by the CPU. */ imx_i2c_write_reg (i2c_8bit_addr_from_msg (msgs), i2c_imx,IMX_I2C_I2DR ); -reinit_completion (&i2c_imx->dma->cmd_complete); time_left =wait_for_completion_timeout ( &i2c_imx->dma->cmd_complete,msecs_to_jiffies (DMA_TIMEOUT ));
@@ -681,7 +681,6 @@ static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx,if (result)return result; -reinit_completion (&i2c_imx->dma->cmd_complete); time_left =wait_for_completion_timeout ( &i2c_imx->dma->cmd_complete,msecs_to_jiffies (DMA_TIMEOUT ));