Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Bluetooth: Create flags for bt_sk()

defer_setup and suspended are now flags into bt_sk().

Signed-off-by: Gustavo Padovan <gustavo@padovan.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>

authored by

Gustavo Padovan and committed by
Gustavo Padovan
c5daa683 c6585a4d

+41 -24
+6 -2
include/net/bluetooth/bluetooth.h
··· 194 194 bdaddr_t dst; 195 195 struct list_head accept_q; 196 196 struct sock *parent; 197 - u32 defer_setup; 198 - bool suspended; 197 + unsigned long flags; 198 + }; 199 + 200 + enum { 201 + BT_SK_DEFER_SETUP, 202 + BT_SK_SUSPEND, 199 203 }; 200 204 201 205 struct bt_sock_list {
+4 -4
net/bluetooth/af_bluetooth.c
··· 210 210 } 211 211 212 212 if (sk->sk_state == BT_CONNECTED || !newsock || 213 - bt_sk(parent)->defer_setup) { 213 + test_bit(BT_DEFER_SETUP, &bt_sk(parent)->flags)) { 214 214 bt_accept_unlink(sk); 215 215 if (newsock) 216 216 sock_graft(sk, newsock); ··· 410 410 list_for_each_safe(p, n, &bt_sk(parent)->accept_q) { 411 411 sk = (struct sock *) list_entry(p, struct bt_sock, accept_q); 412 412 if (sk->sk_state == BT_CONNECTED || 413 - (bt_sk(parent)->defer_setup && 414 - sk->sk_state == BT_CONNECT2)) 413 + (test_bit(BT_SK_DEFER_SETUP, &bt_sk(parent)->flags) && 414 + sk->sk_state == BT_CONNECT2)) 415 415 return POLLIN | POLLRDNORM; 416 416 } 417 417 ··· 450 450 sk->sk_state == BT_CONFIG) 451 451 return mask; 452 452 453 - if (!bt_sk(sk)->suspended && sock_writeable(sk)) 453 + if (!test_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags) && sock_writeable(sk)) 454 454 mask |= POLLOUT | POLLWRNORM | POLLWRBAND; 455 455 else 456 456 set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
+8 -6
net/bluetooth/l2cap_core.c
··· 71 71 void *data); 72 72 static int l2cap_build_conf_req(struct l2cap_chan *chan, void *data); 73 73 static void l2cap_send_disconn_req(struct l2cap_conn *conn, 74 - struct l2cap_chan *chan, int err); 74 + struct l2cap_chan *chan, int err); 75 75 76 76 /* ---- L2CAP channels ---- */ 77 77 ··· 586 586 struct l2cap_conn_rsp rsp; 587 587 __u16 result; 588 588 589 - if (bt_sk(sk)->defer_setup) 589 + if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) 590 590 result = L2CAP_CR_SEC_BLOCK; 591 591 else 592 592 result = L2CAP_CR_BAD_PSM; ··· 1050 1050 1051 1051 if (l2cap_chan_check_security(chan)) { 1052 1052 lock_sock(sk); 1053 - if (bt_sk(sk)->defer_setup) { 1053 + if (test_bit(BT_SK_DEFER_SETUP, 1054 + &bt_sk(sk)->flags)) { 1054 1055 struct sock *parent = bt_sk(sk)->parent; 1055 1056 rsp.result = cpu_to_le16(L2CAP_CR_PEND); 1056 1057 rsp.status = cpu_to_le16(L2CAP_CS_AUTHOR_PEND); ··· 3033 3032 3034 3033 if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE) { 3035 3034 if (l2cap_chan_check_security(chan)) { 3036 - if (bt_sk(sk)->defer_setup) { 3035 + if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) { 3037 3036 __l2cap_state_change(chan, BT_CONNECT2); 3038 3037 result = L2CAP_CR_PEND; 3039 3038 status = L2CAP_CS_AUTHOR_PEND; ··· 4925 4924 chan->state == BT_CONFIG)) { 4926 4925 struct sock *sk = chan->sk; 4927 4926 4928 - bt_sk(sk)->suspended = false; 4927 + clear_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags); 4929 4928 sk->sk_state_change(sk); 4930 4929 4931 4930 l2cap_check_encryption(chan, encrypt); ··· 4947 4946 lock_sock(sk); 4948 4947 4949 4948 if (!status) { 4950 - if (bt_sk(sk)->defer_setup) { 4949 + if (test_bit(BT_SK_DEFER_SETUP, 4950 + &bt_sk(sk)->flags)) { 4951 4951 struct sock *parent = bt_sk(sk)->parent; 4952 4952 res = L2CAP_CR_PEND; 4953 4953 stat = L2CAP_CS_AUTHOR_PEND;
+13 -8
net/bluetooth/l2cap_sock.c
··· 324 324 325 325 case L2CAP_CONNINFO: 326 326 if (sk->sk_state != BT_CONNECTED && 327 - !(sk->sk_state == BT_CONNECT2 && 328 - bt_sk(sk)->defer_setup)) { 327 + !(sk->sk_state == BT_CONNECT2 && 328 + test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) { 329 329 err = -ENOTCONN; 330 330 break; 331 331 } ··· 399 399 break; 400 400 } 401 401 402 - if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval)) 402 + if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags), 403 + (u32 __user *) optval)) 403 404 err = -EFAULT; 404 405 405 406 break; ··· 602 601 603 602 /* or for ACL link */ 604 603 } else if ((sk->sk_state == BT_CONNECT2 && 605 - bt_sk(sk)->defer_setup) || 604 + test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) || 606 605 sk->sk_state == BT_CONNECTED) { 607 606 if (!l2cap_chan_check_security(chan)) 608 - bt_sk(sk)->suspended = true; 607 + set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags); 609 608 else 610 609 sk->sk_state_change(sk); 611 610 } else { ··· 624 623 break; 625 624 } 626 625 627 - bt_sk(sk)->defer_setup = opt; 626 + if (opt) 627 + set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); 628 + else 629 + clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); 628 630 break; 629 631 630 632 case BT_FLUSHABLE: ··· 745 741 746 742 lock_sock(sk); 747 743 748 - if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) { 744 + if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP, 745 + &bt_sk(sk)->flags)) { 749 746 sk->sk_state = BT_CONFIG; 750 747 pi->chan->state = BT_CONFIG; 751 748 ··· 989 984 struct l2cap_chan *pchan = l2cap_pi(parent)->chan; 990 985 991 986 sk->sk_type = parent->sk_type; 992 - bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup; 987 + bt_sk(sk)->flags = bt_sk(parent)->flags; 993 988 994 989 chan->chan_type = pchan->chan_type; 995 990 chan->imtu = pchan->imtu;
+10 -4
net/bluetooth/rfcomm/sock.c
··· 260 260 261 261 if (parent) { 262 262 sk->sk_type = parent->sk_type; 263 - pi->dlc->defer_setup = bt_sk(parent)->defer_setup; 263 + pi->dlc->defer_setup = test_bit(BT_SK_DEFER_SETUP, 264 + &bt_sk(parent)->flags); 264 265 265 266 pi->sec_level = rfcomm_pi(parent)->sec_level; 266 267 pi->role_switch = rfcomm_pi(parent)->role_switch; ··· 732 731 break; 733 732 } 734 733 735 - bt_sk(sk)->defer_setup = opt; 734 + if (opt) 735 + set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); 736 + else 737 + clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); 738 + 736 739 break; 737 740 738 741 default: ··· 854 849 break; 855 850 } 856 851 857 - if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval)) 852 + if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags), 853 + (u32 __user *) optval)) 858 854 err = -EFAULT; 859 855 860 856 break; ··· 978 972 done: 979 973 bh_unlock_sock(parent); 980 974 981 - if (bt_sk(parent)->defer_setup) 975 + if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(parent)->flags)) 982 976 parent->sk_state_change(parent); 983 977 984 978 return result;