diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2014-03-18 17:19:12 +0000 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2014-04-01 11:55:00 +0200 |
commit | bf88a20611d5a62119a02da4eba95b461ec692c8 (patch) | |
tree | f1ee16ea5621c98799fdf17f5b102474a77b4e8e /drivers/net/can/c_can/c_can.h | |
parent | 710c56105dfd10e32a89086cf78cc1c8433f6a7a (diff) | |
download | lwn-bf88a20611d5a62119a02da4eba95b461ec692c8.tar.gz lwn-bf88a20611d5a62119a02da4eba95b461ec692c8.zip |
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>
Diffstat (limited to 'drivers/net/can/c_can/c_can.h')
-rw-r--r-- | drivers/net/can/c_can/c_can.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/can/c_can/c_can.h b/drivers/net/can/c_can/c_can.h index d2e1c21b143f..5097c802a61e 100644 --- a/drivers/net/can/c_can/c_can.h +++ b/drivers/net/can/c_can/c_can.h @@ -156,6 +156,7 @@ struct c_can_priv { struct napi_struct napi; struct net_device *dev; struct device *device; + spinlock_t xmit_lock; int tx_object; int current_status; int last_status; |