From 087f8b0ee30844b68485ace8c9c45e7c8463f968 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Tue, 28 Oct 2003 19:31:46 -0800 Subject: [PATCH] [LLC]: fix bug that prevented fcntl(O_NONBLOCK) from working with PF_LLC sockets --- net/llc/af_llc.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index bce3c9278e334..c8ac51fe2b60f 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c @@ -495,12 +495,6 @@ static int llc_ui_wait_for_disc(struct sock *sk, int timeout) add_wait_queue_exclusive(sk->sk_sleep, &wait); for (;;) { __set_current_state(TASK_INTERRUPTIBLE); - rc = -ERESTARTSYS; - if (signal_pending(current)) - break; - rc = -EAGAIN; - if (!timeout) - break; rc = 0; if (sk->sk_state != TCP_CLOSE) { release_sock(sk); @@ -508,6 +502,12 @@ static int llc_ui_wait_for_disc(struct sock *sk, int timeout) lock_sock(sk); } else break; + rc = -ERESTARTSYS; + if (signal_pending(current)) + break; + rc = -EAGAIN; + if (!timeout) + break; } __set_current_state(TASK_RUNNING); remove_wait_queue(sk->sk_sleep, &wait); @@ -525,12 +525,6 @@ static int llc_ui_wait_for_conn(struct sock *sk, int timeout) rc = -EAGAIN; if (sk->sk_state == TCP_CLOSE) break; - rc = -ERESTARTSYS; - if (signal_pending(current)) - break; - rc = -EAGAIN; - if (!timeout) - break; rc = 0; if (sk->sk_state != TCP_ESTABLISHED) { release_sock(sk); @@ -538,6 +532,12 @@ static int llc_ui_wait_for_conn(struct sock *sk, int timeout) lock_sock(sk); } else break; + rc = -ERESTARTSYS; + if (signal_pending(current)) + break; + rc = -EAGAIN; + if (!timeout) + break; } __set_current_state(TASK_RUNNING); remove_wait_queue(sk->sk_sleep, &wait); @@ -554,12 +554,6 @@ static int llc_ui_wait_for_data(struct sock *sk, int timeout) __set_current_state(TASK_INTERRUPTIBLE); if (sk->sk_shutdown & RCV_SHUTDOWN) break; - rc = -ERESTARTSYS; - if (signal_pending(current)) - break; - rc = -EAGAIN; - if (!timeout) - break; /* * Well, if we have backlog, try to process it now. */ @@ -574,6 +568,12 @@ static int llc_ui_wait_for_data(struct sock *sk, int timeout) lock_sock(sk); } else break; + rc = -ERESTARTSYS; + if (signal_pending(current)) + break; + rc = -EAGAIN; + if (!timeout) + break; } __set_current_state(TASK_RUNNING); remove_wait_queue(sk->sk_sleep, &wait); @@ -593,12 +593,6 @@ static int llc_ui_wait_for_busy_core(struct sock *sk, int timeout) rc = -ENOTCONN; if (sk->sk_shutdown & RCV_SHUTDOWN) break; - rc = -ERESTARTSYS; - if (signal_pending(current)) - break; - rc = -EAGAIN; - if (!timeout) - break; rc = 0; if (llc_data_accept_state(llc->state) || llc->p_flag) { release_sock(sk); @@ -606,6 +600,12 @@ static int llc_ui_wait_for_busy_core(struct sock *sk, int timeout) lock_sock(sk); } else break; + rc = -ERESTARTSYS; + if (signal_pending(current)) + break; + rc = -EAGAIN; + if (!timeout) + break; } __set_current_state(TASK_RUNNING); remove_wait_queue(sk->sk_sleep, &wait); -- 2.53.0