Bluetooth: Fix context in rfcomm_sock_lock
Code now run in process context, does not need to disable interrupt anymore. Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
parent
9219b2a08c
commit
95ca83f42f
|
@ -370,7 +370,7 @@ static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_lock_bh(&rfcomm_sk_list.lock);
|
write_lock(&rfcomm_sk_list.lock);
|
||||||
|
|
||||||
if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) {
|
if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) {
|
||||||
err = -EADDRINUSE;
|
err = -EADDRINUSE;
|
||||||
|
@ -381,7 +381,7 @@ static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr
|
||||||
sk->sk_state = BT_BOUND;
|
sk->sk_state = BT_BOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_unlock_bh(&rfcomm_sk_list.lock);
|
write_unlock(&rfcomm_sk_list.lock);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
release_sock(sk);
|
release_sock(sk);
|
||||||
|
@ -455,7 +455,7 @@ static int rfcomm_sock_listen(struct socket *sock, int backlog)
|
||||||
|
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
|
|
||||||
write_lock_bh(&rfcomm_sk_list.lock);
|
write_lock(&rfcomm_sk_list.lock);
|
||||||
|
|
||||||
for (channel = 1; channel < 31; channel++)
|
for (channel = 1; channel < 31; channel++)
|
||||||
if (!__rfcomm_get_sock_by_addr(channel, src)) {
|
if (!__rfcomm_get_sock_by_addr(channel, src)) {
|
||||||
|
@ -464,7 +464,7 @@ static int rfcomm_sock_listen(struct socket *sock, int backlog)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_unlock_bh(&rfcomm_sk_list.lock);
|
write_unlock(&rfcomm_sk_list.lock);
|
||||||
|
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -982,7 +982,7 @@ static int rfcomm_sock_debugfs_show(struct seq_file *f, void *p)
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
struct hlist_node *node;
|
struct hlist_node *node;
|
||||||
|
|
||||||
read_lock_bh(&rfcomm_sk_list.lock);
|
read_lock(&rfcomm_sk_list.lock);
|
||||||
|
|
||||||
sk_for_each(sk, node, &rfcomm_sk_list.head) {
|
sk_for_each(sk, node, &rfcomm_sk_list.head) {
|
||||||
seq_printf(f, "%s %s %d %d\n",
|
seq_printf(f, "%s %s %d %d\n",
|
||||||
|
@ -991,7 +991,7 @@ static int rfcomm_sock_debugfs_show(struct seq_file *f, void *p)
|
||||||
sk->sk_state, rfcomm_pi(sk)->channel);
|
sk->sk_state, rfcomm_pi(sk)->channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
read_unlock_bh(&rfcomm_sk_list.lock);
|
read_unlock(&rfcomm_sk_list.lock);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue