Bluetooth: Add l2cap_chan_lock
Channel lock will be used to lock L2CAP channels which are locked currently by socket locks. Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Acked-by: Marcel Holtmann <marcel@holtmann.org> Reviewed-by: Ulisses Furquim <ulisses@profusion.mobi> Acked-by: Gustavo F. Padovan <padovan@profusion.mobi> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Родитель
3df91ea20e
Коммит
c03b355ea2
|
@ -497,6 +497,7 @@ struct l2cap_chan {
|
||||||
|
|
||||||
void *data;
|
void *data;
|
||||||
struct l2cap_ops *ops;
|
struct l2cap_ops *ops;
|
||||||
|
struct mutex lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct l2cap_ops {
|
struct l2cap_ops {
|
||||||
|
@ -609,6 +610,16 @@ static inline void l2cap_chan_put(struct l2cap_chan *c)
|
||||||
kfree(c);
|
kfree(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void l2cap_chan_lock(struct l2cap_chan *chan)
|
||||||
|
{
|
||||||
|
mutex_lock(&chan->lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void l2cap_chan_unlock(struct l2cap_chan *chan)
|
||||||
|
{
|
||||||
|
mutex_unlock(&chan->lock);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void l2cap_set_timer(struct l2cap_chan *chan,
|
static inline void l2cap_set_timer(struct l2cap_chan *chan,
|
||||||
struct delayed_work *work, long timeout)
|
struct delayed_work *work, long timeout)
|
||||||
{
|
{
|
||||||
|
|
|
@ -247,6 +247,8 @@ struct l2cap_chan *l2cap_chan_create(struct sock *sk)
|
||||||
if (!chan)
|
if (!chan)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
mutex_init(&chan->lock);
|
||||||
|
|
||||||
chan->sk = sk;
|
chan->sk = sk;
|
||||||
|
|
||||||
write_lock(&chan_list_lock);
|
write_lock(&chan_list_lock);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче