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>
This commit is contained in:

committed by
Marcel Holtmann

parent
22e7078641
commit
86aae6c7b5
@@ -173,7 +173,7 @@ struct rfcomm_dlc {
|
||||
struct sk_buff_head tx_queue;
|
||||
struct timer_list timer;
|
||||
|
||||
spinlock_t lock;
|
||||
struct mutex lock;
|
||||
unsigned long state;
|
||||
unsigned long flags;
|
||||
atomic_t refcnt;
|
||||
@@ -244,8 +244,8 @@ int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig);
|
||||
void rfcomm_dlc_accept(struct rfcomm_dlc *d);
|
||||
struct rfcomm_dlc *rfcomm_dlc_exists(bdaddr_t *src, bdaddr_t *dst, u8 channel);
|
||||
|
||||
#define rfcomm_dlc_lock(d) spin_lock(&d->lock)
|
||||
#define rfcomm_dlc_unlock(d) spin_unlock(&d->lock)
|
||||
#define rfcomm_dlc_lock(d) mutex_lock(&d->lock)
|
||||
#define rfcomm_dlc_unlock(d) mutex_unlock(&d->lock)
|
||||
|
||||
static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d)
|
||||
{
|
||||
|
Reference in New Issue
Block a user