|
@@ -1583,11 +1583,11 @@ out_cud_release:
|
|
|
case SIOCX25CALLACCPTAPPRV: {
|
|
|
rc = -EINVAL;
|
|
|
lock_sock(sk);
|
|
|
- if (sk->sk_state != TCP_CLOSE)
|
|
|
- break;
|
|
|
- clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags);
|
|
|
+ if (sk->sk_state == TCP_CLOSE) {
|
|
|
+ clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags);
|
|
|
+ rc = 0;
|
|
|
+ }
|
|
|
release_sock(sk);
|
|
|
- rc = 0;
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1595,14 +1595,15 @@ out_cud_release:
|
|
|
rc = -EINVAL;
|
|
|
lock_sock(sk);
|
|
|
if (sk->sk_state != TCP_ESTABLISHED)
|
|
|
- break;
|
|
|
+ goto out_sendcallaccpt_release;
|
|
|
/* must call accptapprv above */
|
|
|
if (test_bit(X25_ACCPT_APPRV_FLAG, &x25->flags))
|
|
|
- break;
|
|
|
+ goto out_sendcallaccpt_release;
|
|
|
x25_write_internal(sk, X25_CALL_ACCEPTED);
|
|
|
x25->state = X25_STATE_3;
|
|
|
- release_sock(sk);
|
|
|
rc = 0;
|
|
|
+out_sendcallaccpt_release:
|
|
|
+ release_sock(sk);
|
|
|
break;
|
|
|
}
|
|
|
|