Testing timeo before sk_err/sk_state/sk_shutdown makes more sense.
Modern applications use non-blocking IO, while a socket is terminated
only once during its life time.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
                        break;
 
                if (copied) {
-                       if (sk->sk_err ||
+                       if (!timeo ||
+                           sk->sk_err ||
                            sk->sk_state == TCP_CLOSE ||
                            (sk->sk_shutdown & RCV_SHUTDOWN) ||
-                           !timeo ||
                            signal_pending(current))
                                break;
                } else {