l2cap_sock.c (890ca861f868a10617029ffc87eae7d48ea6876c) l2cap_sock.c (abe84903a8efc6b83fa92161429e0e3a28bde15c)
1/*
2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5 Copyright (C) 2010 Google Inc.
6 Copyright (C) 2011 ProFUSION Embedded Systems
7
8 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>

--- 271 unchanged lines hidden (view full) ---

280 default:
281 err = -EOPNOTSUPP;
282 goto done;
283 }
284
285 sk->sk_max_ack_backlog = backlog;
286 sk->sk_ack_backlog = 0;
287
1/*
2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5 Copyright (C) 2010 Google Inc.
6 Copyright (C) 2011 ProFUSION Embedded Systems
7
8 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>

--- 271 unchanged lines hidden (view full) ---

280 default:
281 err = -EOPNOTSUPP;
282 goto done;
283 }
284
285 sk->sk_max_ack_backlog = backlog;
286 sk->sk_ack_backlog = 0;
287
288 /* Listening channels need to use nested locking in order not to
289 * cause lockdep warnings when the created child channels end up
290 * being locked in the same thread as the parent channel.
291 */
292 atomic_set(&chan->nesting, L2CAP_NESTING_PARENT);
293
288 chan->state = BT_LISTEN;
289 sk->sk_state = BT_LISTEN;
290
291done:
292 release_sock(sk);
293 return err;
294}
295

--- 945 unchanged lines hidden (view full) ---

1241 l2cap_sock_kill(sk);
1242}
1243
1244static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1245{
1246 struct sock *sk = chan->data;
1247 struct sock *parent;
1248
294 chan->state = BT_LISTEN;
295 sk->sk_state = BT_LISTEN;
296
297done:
298 release_sock(sk);
299 return err;
300}
301

--- 945 unchanged lines hidden (view full) ---

1247 l2cap_sock_kill(sk);
1248}
1249
1250static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1251{
1252 struct sock *sk = chan->data;
1253 struct sock *parent;
1254
1249 lock_sock(sk);
1255 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
1250
1251 parent = bt_sk(sk)->parent;
1252
1253 sock_set_flag(sk, SOCK_ZAPPED);
1254
1255 switch (chan->state) {
1256 case BT_OPEN:
1257 case BT_BOUND:

--- 234 unchanged lines hidden (view full) ---

1492 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1493 } else {
1494 chan->mode = L2CAP_MODE_BASIC;
1495 }
1496
1497 l2cap_chan_set_defaults(chan);
1498 }
1499
1256
1257 parent = bt_sk(sk)->parent;
1258
1259 sock_set_flag(sk, SOCK_ZAPPED);
1260
1261 switch (chan->state) {
1262 case BT_OPEN:
1263 case BT_BOUND:

--- 234 unchanged lines hidden (view full) ---

1498 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1499 } else {
1500 chan->mode = L2CAP_MODE_BASIC;
1501 }
1502
1503 l2cap_chan_set_defaults(chan);
1504 }
1505
1506 /* Set default lock nesting level */
1507 atomic_set(&chan->nesting, L2CAP_NESTING_NORMAL);
1508
1500 /* Default config options */
1501 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1502
1503 chan->data = sk;
1504 chan->ops = &l2cap_chan_ops;
1505}
1506
1507static struct proto l2cap_proto = {

--- 129 unchanged lines hidden ---
1509 /* Default config options */
1510 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1511
1512 chan->data = sk;
1513 chan->ops = &l2cap_chan_ops;
1514}
1515
1516static struct proto l2cap_proto = {

--- 129 unchanged lines hidden ---