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 --- |