|
@@ -765,7 +765,9 @@ static int sco_sock_getsockopt_old(struct socket *sock, int optname, char __user
|
|
|
|
|
|
switch (optname) {
|
|
|
case SCO_OPTIONS:
|
|
|
- if (sk->sk_state != BT_CONNECTED) {
|
|
|
+ if (sk->sk_state != BT_CONNECTED &&
|
|
|
+ !(sk->sk_state == BT_CONNECT2 &&
|
|
|
+ test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
|
|
|
err = -ENOTCONN;
|
|
|
break;
|
|
|
}
|
|
@@ -781,7 +783,9 @@ static int sco_sock_getsockopt_old(struct socket *sock, int optname, char __user
|
|
|
break;
|
|
|
|
|
|
case SCO_CONNINFO:
|
|
|
- if (sk->sk_state != BT_CONNECTED) {
|
|
|
+ if (sk->sk_state != BT_CONNECTED &&
|
|
|
+ !(sk->sk_state == BT_CONNECT2 &&
|
|
|
+ test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
|
|
|
err = -ENOTCONN;
|
|
|
break;
|
|
|
}
|