diff options
author | Libor Pechacek <lpechacek@suse.cz> | 2014-04-29 14:38:34 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-05-05 22:25:06 -0400 |
commit | 86aae6c7b577654b7293374973985a153e0c147e (patch) | |
tree | 2bc969c42c78d2fa817c0bdb0d0a85dcf692d075 /include/net | |
parent | 22e70786413ed05950207eda7be420c280b776d7 (diff) |
Bluetooth: Convert RFCOMM spinlocks into mutexes
Enabling CONFIG_DEBUG_ATOMIC_SLEEP has shown that some rfcomm functions
acquiring spinlocks call sleeping locks further in the chain. Converting
the offending spinlocks into mutexes makes sleeping safe.
Signed-off-by: Libor Pechacek <lpechacek@suse.cz>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/bluetooth/rfcomm.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h index 2611cc389d7d..578b83127af1 100644 --- a/include/net/bluetooth/rfcomm.h +++ b/include/net/bluetooth/rfcomm.h | |||
@@ -173,7 +173,7 @@ struct rfcomm_dlc { | |||
173 | struct sk_buff_head tx_queue; | 173 | struct sk_buff_head tx_queue; |
174 | struct timer_list timer; | 174 | struct timer_list timer; |
175 | 175 | ||
176 | spinlock_t lock; | 176 | struct mutex lock; |
177 | unsigned long state; | 177 | unsigned long state; |
178 | unsigned long flags; | 178 | unsigned long flags; |
179 | atomic_t refcnt; | 179 | atomic_t refcnt; |
@@ -244,8 +244,8 @@ int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig); | |||
244 | void rfcomm_dlc_accept(struct rfcomm_dlc *d); | 244 | void rfcomm_dlc_accept(struct rfcomm_dlc *d); |
245 | struct rfcomm_dlc *rfcomm_dlc_exists(bdaddr_t *src, bdaddr_t *dst, u8 channel); | 245 | struct rfcomm_dlc *rfcomm_dlc_exists(bdaddr_t *src, bdaddr_t *dst, u8 channel); |
246 | 246 | ||
247 | #define rfcomm_dlc_lock(d) spin_lock(&d->lock) | 247 | #define rfcomm_dlc_lock(d) mutex_lock(&d->lock) |
248 | #define rfcomm_dlc_unlock(d) spin_unlock(&d->lock) | 248 | #define rfcomm_dlc_unlock(d) mutex_unlock(&d->lock) |
249 | 249 | ||
250 | static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d) | 250 | static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d) |
251 | { | 251 | { |