1
0
Files
linux/include/net
Gustavo F. Padovan dfc909befb Bluetooth: Fix race condition on l2cap_ertm_send()
l2cap_ertm_send() can be called both from user context and bottom half
context. The socket locks for that contexts are different, the user
context uses a mutex(which can sleep) and the second one uses a
spinlock_bh. That creates a race condition when we have interruptions on
both contexts at the same time.

The better way to solve this is to add a new spinlock to lock
l2cap_ertm_send() and the vars it access. The other solution was to defer
l2cap_ertm_send() with a workqueue, but we the sending process already
has one defer on the hci layer. It's not a good idea add another one.

The patch refactor the code to create l2cap_retransmit_frames(), then we
encapulate the lock of l2cap_ertm_send() for some call. It also changes
l2cap_retransmit_frame() to l2cap_retransmit_one_frame() to avoid
confusion

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Reviewed-by: João Paulo Rechi Vita <jprvita@profusion.mobi>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
2010-05-10 09:28:53 +02:00
..
2010-01-07 00:24:55 -08:00
2009-11-04 05:06:25 -08:00
2009-09-01 17:40:57 -07:00
2009-11-04 05:06:25 -08:00
2009-03-21 19:06:54 -07:00
2009-09-01 17:40:31 -07:00
2010-04-13 01:41:33 -07:00
2009-11-04 05:06:25 -08:00
2009-11-04 05:06:25 -08:00
2009-11-13 20:46:58 -08:00
2010-04-13 01:41:33 -07:00
2010-04-28 15:31:51 -07:00
2009-11-04 05:06:25 -08:00
2010-04-23 23:35:29 -07:00
2009-12-26 20:46:28 -08:00
2010-03-12 15:52:40 -08:00
2009-11-20 15:35:04 -08:00
2010-04-01 18:38:48 -07:00
2009-03-21 19:06:50 -07:00
2010-04-13 14:49:34 -07:00
2009-11-04 05:06:25 -08:00
2009-07-26 19:11:14 -07:00
2010-04-01 18:38:48 -07:00
2009-11-04 05:06:25 -08:00
2010-04-22 16:00:00 -07:00
2009-11-10 20:54:38 -08:00
2009-10-07 16:39:43 -04:00