]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
can: c_can: fix race condition in c_can_open()
authorAnilKumar Ch <anilkumar@ti.com>
Wed, 23 May 2012 12:15:11 +0000 (17:45 +0530)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 19 Jun 2012 22:18:10 +0000 (23:18 +0100)
commitb22c7115f09667e64e449c6f7a9bdfc97cab604d
treefcb568bcc6213b8a804a78eed2441bc35f9f3a8d
parent2d0b51477157f5c7669cf56da4f816e8dc546f64
can: c_can: fix race condition in c_can_open()

commit f461f27a4436dbe691908fe08b867ef888848cc3 upstream.

Fix the issue of C_CAN interrupts getting disabled forever when canconfig
utility is used multiple times. According to NAPI usage we disable all
the hardware interrupts in ISR and re-enable them in poll(). Current
implementation calls napi_enable() after hardware interrupts are enabled.
If we get any interrupts between these two steps then we do not process
those interrupts because napi is not enabled. Mostly these interrupts
come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable()
happens before HW interrupts enabled then c_can_poll() function will be
called eventual re-enabling.

This patch moves the napi_enable() call before interrupts enabled.

Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/can/c_can/c_can.c