diff options
Diffstat (limited to 'net/llc')
-rw-r--r-- | net/llc/af_llc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index 59d02cbbeb9e..c3f0b0783453 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c | |||
@@ -116,7 +116,9 @@ static int llc_ui_send_data(struct sock* sk, struct sk_buff *skb, int noblock) | |||
116 | struct llc_sock* llc = llc_sk(sk); | 116 | struct llc_sock* llc = llc_sk(sk); |
117 | int rc = 0; | 117 | int rc = 0; |
118 | 118 | ||
119 | if (unlikely(llc_data_accept_state(llc->state) || llc->p_flag)) { | 119 | if (unlikely(llc_data_accept_state(llc->state) || |
120 | llc->remote_busy_flag || | ||
121 | llc->p_flag)) { | ||
120 | long timeout = sock_sndtimeo(sk, noblock); | 122 | long timeout = sock_sndtimeo(sk, noblock); |
121 | 123 | ||
122 | rc = llc_ui_wait_for_busy_core(sk, timeout); | 124 | rc = llc_ui_wait_for_busy_core(sk, timeout); |
@@ -542,6 +544,7 @@ static int llc_ui_wait_for_busy_core(struct sock *sk, long timeout) | |||
542 | if (sk_wait_event(sk, &timeout, | 544 | if (sk_wait_event(sk, &timeout, |
543 | (sk->sk_shutdown & RCV_SHUTDOWN) || | 545 | (sk->sk_shutdown & RCV_SHUTDOWN) || |
544 | (!llc_data_accept_state(llc->state) && | 546 | (!llc_data_accept_state(llc->state) && |
547 | !llc->remote_busy_flag && | ||
545 | !llc->p_flag))) | 548 | !llc->p_flag))) |
546 | break; | 549 | break; |
547 | rc = -ERESTARTSYS; | 550 | rc = -ERESTARTSYS; |