can: c_can: Provide protection in the xmit path
authorThomas Gleixner <tglx@linutronix.de>
Tue, 18 Mar 2014 17:19:12 +0000 (17:19 +0000)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Tue, 1 Apr 2014 09:55:00 +0000 (11:55 +0200)
commitbf88a20611d5a62119a02da4eba95b461ec692c8
treef1ee16ea5621c98799fdf17f5b102474a77b4e8e
parent710c56105dfd10e32a89086cf78cc1c8433f6a7a
can: c_can: Provide protection in the xmit path

The network core does not serialize the access to the hardware. The
xmit related code lets the following happen:

CPU0               CPU1
interrupt()
 do_poll()
   c_can_do_tx()
    Fiddle with HW and xmit()
    internal data   Fiddle with HW and
             internal data

due the complete lack of serialization.

Add proper locking.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/c_can/c_can.c
drivers/net/can/c_can/c_can.h