|
@@ -1259,14 +1259,12 @@ static int smc_shutdown(struct socket *sock, int how)
|
|
rc = smc_close_shutdown_write(smc);
|
|
rc = smc_close_shutdown_write(smc);
|
|
break;
|
|
break;
|
|
case SHUT_RD:
|
|
case SHUT_RD:
|
|
- if (sk->sk_state == SMC_LISTEN)
|
|
|
|
- rc = smc_close_active(smc);
|
|
|
|
- else
|
|
|
|
- rc = 0;
|
|
|
|
- /* nothing more to do because peer is not involved */
|
|
|
|
|
|
+ rc = 0;
|
|
|
|
+ /* nothing more to do because peer is not involved */
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- rc1 = kernel_sock_shutdown(smc->clcsock, how);
|
|
|
|
|
|
+ if (smc->clcsock)
|
|
|
|
+ rc1 = kernel_sock_shutdown(smc->clcsock, how);
|
|
/* map sock_shutdown_cmd constants to sk_shutdown value range */
|
|
/* map sock_shutdown_cmd constants to sk_shutdown value range */
|
|
sk->sk_shutdown |= how + 1;
|
|
sk->sk_shutdown |= how + 1;
|
|
|
|
|