can: xilinx_can: fix incorrect clear of non-processed interrupts
authorAnssi Hannula <anssi.hannula@bitwise.fi>
Mon, 26 Feb 2018 12:39:59 +0000 (14:39 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 23 Jul 2018 12:34:46 +0000 (14:34 +0200)
commit2f4f0f338cf453bfcdbcf089e177c16f35f023c8
treec0fd1f7f92f49a778e13fff5708f056e65806b5f
parent83997997252f5d3fc7f04abc24a89600c2b504ab
can: xilinx_can: fix incorrect clear of non-processed interrupts

xcan_interrupt() clears ERROR|RXOFLV|BSOFF|ARBLST interrupts if any of
them is asserted. This does not take into account that some of them
could have been asserted between interrupt status read and interrupt
clear, therefore clearing them without handling them.

Fix the code to only clear those interrupts that it knows are asserted
and therefore going to be processed in xcan_err_interrupt().

Fixes: b1201e44f50b ("can: xilinx CAN controller support")
Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/xilinx_can.c