|
@@ -494,9 +494,8 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
|
|
|
BT_DBG("sk %p", sk);
|
|
|
|
|
|
add_wait_queue(sk_sleep(sk), &wait);
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
while (sk->sk_state != state) {
|
|
|
- set_current_state(TASK_INTERRUPTIBLE);
|
|
|
-
|
|
|
if (!timeo) {
|
|
|
err = -EINPROGRESS;
|
|
|
break;
|
|
@@ -510,12 +509,13 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
|
|
|
release_sock(sk);
|
|
|
timeo = schedule_timeout(timeo);
|
|
|
lock_sock(sk);
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
|
|
|
err = sock_error(sk);
|
|
|
if (err)
|
|
|
break;
|
|
|
}
|
|
|
- set_current_state(TASK_RUNNING);
|
|
|
+ __set_current_state(TASK_RUNNING);
|
|
|
remove_wait_queue(sk_sleep(sk), &wait);
|
|
|
return err;
|
|
|
}
|