projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] add numa node information to struct device
[powerpc.git]
/
net
/
bluetooth
/
l2cap.c
diff --git
a/net/bluetooth/l2cap.c
b/net/bluetooth/l2cap.c
index
66fc621
..
29a8fa4
100644
(file)
--- a/
net/bluetooth/l2cap.c
+++ b/
net/bluetooth/l2cap.c
@@
-559,7
+559,7
@@
static int l2cap_sock_create(struct socket *sock, int protocol)
sock->ops = &l2cap_sock_ops;
sock->ops = &l2cap_sock_ops;
- sk = l2cap_sock_alloc(sock, protocol, GFP_
KERNEL
);
+ sk = l2cap_sock_alloc(sock, protocol, GFP_
ATOMIC
);
if (!sk)
return -ENOMEM;
if (!sk)
return -ENOMEM;
@@
-770,7
+770,7
@@
static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
long timeo;
int err = 0;
long timeo;
int err = 0;
- lock_sock
(sk
);
+ lock_sock
_nested(sk, SINGLE_DEPTH_NESTING
);
if (sk->sk_state != BT_LISTEN) {
err = -EBADFD;
if (sk->sk_state != BT_LISTEN) {
err = -EBADFD;
@@
-792,7
+792,7
@@
static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
release_sock(sk);
timeo = schedule_timeout(timeo);
release_sock(sk);
timeo = schedule_timeout(timeo);
- lock_sock
(sk
);
+ lock_sock
_nested(sk, SINGLE_DEPTH_NESTING
);
if (sk->sk_state != BT_LISTEN) {
err = -EBADFD;
if (sk->sk_state != BT_LISTEN) {
err = -EBADFD;
@@
-1353,12
+1353,12
@@
static inline int l2cap_conf_output(struct sock *sk, void **ptr)
/* Configure output options and let the other side know
* which ones we don't like. */
/* Configure output options and let the other side know
* which ones we don't like. */
- if (pi->conf_mtu < pi->omtu) {
- l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, pi->omtu);
+ if (pi->conf_mtu < pi->omtu)
result = L2CAP_CONF_UNACCEPT;
result = L2CAP_CONF_UNACCEPT;
- } else {
+ else
pi->omtu = pi->conf_mtu;
pi->omtu = pi->conf_mtu;
- }
+
+ l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, pi->omtu);
BT_DBG("sk %p result %d", sk, result);
return result;
BT_DBG("sk %p result %d", sk, result);
return result;
@@
-1533,6
+1533,9
@@
static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr
if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
return -ENOENT;
if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
return -ENOENT;
+ if (sk->sk_state == BT_DISCONN)
+ goto unlock;
+
l2cap_parse_conf_req(sk, req->data, cmd->len - sizeof(*req));
if (flags & 0x0001) {
l2cap_parse_conf_req(sk, req->data, cmd->len - sizeof(*req));
if (flags & 0x0001) {