SAMV7: Don't call can_txdone with the device locked. This can lead to deadlocks on subsequent actions from the upper half can driver

This commit is contained in:
Gregory Nutt 2015-11-12 07:58:09 -06:00
parent 54cff3c5ae
commit 78153004ee

View File

@ -2748,6 +2748,7 @@ static int mcan_send(FAR struct can_dev_s *dev, FAR struct can_msg_s *msg)
/* And request to send the packet */
mcan_putreg(priv, SAM_MCAN_TXBAR_OFFSET, (1 << ndx));
mcan_dev_unlock(priv);
/* Report that the TX transfer is complete to the upper half logic. Of
* course, the transfer is not complete, but this early notification
@ -2759,8 +2760,6 @@ static int mcan_send(FAR struct can_dev_s *dev, FAR struct can_msg_s *msg)
*/
can_txdone(dev);
mcan_dev_unlock(priv);
return OK;
}