Merge branches 'pm-devfreq', 'pm-qos', 'pm-tools' and 'pm-docs'
[linux-2.6-microblaze.git] / net / bluetooth / sco.c
index 8eabf41..1111da4 100644 (file)
@@ -574,19 +574,24 @@ static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen
            addr->sa_family != AF_BLUETOOTH)
                return -EINVAL;
 
-       if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND)
-               return -EBADFD;
+       lock_sock(sk);
+       if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND) {
+               err = -EBADFD;
+               goto done;
+       }
 
-       if (sk->sk_type != SOCK_SEQPACKET)
-               return -EINVAL;
+       if (sk->sk_type != SOCK_SEQPACKET) {
+               err = -EINVAL;
+               goto done;
+       }
 
        hdev = hci_get_route(&sa->sco_bdaddr, &sco_pi(sk)->src, BDADDR_BREDR);
-       if (!hdev)
-               return -EHOSTUNREACH;
+       if (!hdev) {
+               err = -EHOSTUNREACH;
+               goto done;
+       }
        hci_dev_lock(hdev);
 
-       lock_sock(sk);
-
        /* Set destination address and psm */
        bacpy(&sco_pi(sk)->dst, &sa->sco_bdaddr);
 
@@ -885,7 +890,7 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
                        err = -EBADFD;
                        break;
                }
-               if (enhanced_sco_capable(hdev) &&
+               if (enhanced_sync_conn_capable(hdev) &&
                    voice.setting == BT_VOICE_TRANSPARENT)
                        sco_pi(sk)->codec.id = BT_CODEC_TRANSPARENT;
                hci_dev_put(hdev);