]> Pileus Git - ~andy/linux/blobdiff - net/bluetooth/rfcomm/sock.c
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / net / bluetooth / rfcomm / sock.c
index a55a43e9f70e9d35181f1272c3897ac43856a6d9..e8707debb8642cff6cc08755a6400134bcf5b8c7 100644 (file)
@@ -260,7 +260,8 @@ static void rfcomm_sock_init(struct sock *sk, struct sock *parent)
 
        if (parent) {
                sk->sk_type = parent->sk_type;
-               pi->dlc->defer_setup = bt_sk(parent)->defer_setup;
+               pi->dlc->defer_setup = test_bit(BT_SK_DEFER_SETUP,
+                                               &bt_sk(parent)->flags);
 
                pi->sec_level = rfcomm_pi(parent)->sec_level;
                pi->role_switch = rfcomm_pi(parent)->role_switch;
@@ -731,7 +732,11 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c
                        break;
                }
 
-               bt_sk(sk)->defer_setup = opt;
+               if (opt)
+                       set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
+               else
+                       clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
+
                break;
 
        default:
@@ -849,7 +854,8 @@ static int rfcomm_sock_getsockopt(struct socket *sock, int level, int optname, c
                        break;
                }
 
-               if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
+               if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
+                            (u32 __user *) optval))
                        err = -EFAULT;
 
                break;
@@ -972,7 +978,7 @@ int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc *
 done:
        bh_unlock_sock(parent);
 
-       if (bt_sk(parent)->defer_setup)
+       if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(parent)->flags))
                parent->sk_state_change(parent);
 
        return result;