dmaengine: sh: rcar-dmac: Fix glitch in dmaengine_tx_status
commit 6e7da74775348d96e2d7efaf3f91410e18c481ef upstream. The tx_status poll in the rcar_dmac driver reads the status register which indicates which chunk is busy (DMACHCRB). Afterwards the point inside the chunk is read from DMATCRB. It is possible that the chunk has changed between the two reads. The result is a non-monotonous increase of the residue. Fix this by introducing a 'safe read' logic. Fixes: 73a47bd0 ("dmaengine: rcar-dmac: use TCRB instead of TCR for residue") Signed-off-by: NAchim Dahlhoff <Achim.Dahlhoff@de.bosch.com> Signed-off-by: NDirk Behme <dirk.behme@de.bosch.com> Reviewed-by: NYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Cc: <stable@vger.kernel.org> # v4.16+ Signed-off-by: NVinod Koul <vkoul@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing
想要评论请 注册 或 登录