{
        struct smc_cdc_conn_state_flags *txflags =
                &smc->conn.local_tx_ctrl.conn_state_flags;
-       long timeout = SMC_MAX_STREAM_WAIT_TIMEOUT;
        struct smc_connection *conn = &smc->conn;
        struct sock *sk = &smc->sk;
        int old_state;
+       long timeout;
        int rc = 0;
 
-       if (sock_flag(sk, SOCK_LINGER) &&
-           !(current->flags & PF_EXITING))
-               timeout = sk->sk_lingertime;
+       timeout = current->flags & PF_EXITING ?
+                 0 : sock_flag(sk, SOCK_LINGER) ?
+                     sk->sk_lingertime : SMC_MAX_STREAM_WAIT_TIMEOUT;
 
 again:
        old_state = sk->sk_state;
 int smc_close_shutdown_write(struct smc_sock *smc)
 {
        struct smc_connection *conn = &smc->conn;
-       long timeout = SMC_MAX_STREAM_WAIT_TIMEOUT;
        struct sock *sk = &smc->sk;
        int old_state;
+       long timeout;
        int rc = 0;
 
-       if (sock_flag(sk, SOCK_LINGER))
-               timeout = sk->sk_lingertime;
+       timeout = current->flags & PF_EXITING ?
+                 0 : sock_flag(sk, SOCK_LINGER) ?
+                     sk->sk_lingertime : SMC_MAX_STREAM_WAIT_TIMEOUT;
 
 again:
        old_state = sk->sk_state;