diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index 12615a9794bc0186d10229ae61d05fe28e1c8a2a..2e12bbf99f9e9f03a1edcd1b5b58d0f88af0ed44 100644 --- a/net/smc/smc_core.c +++ b/net/smc/smc_core.c @@ -1354,6 +1354,7 @@ static void smc_buf_unuse(struct smc_connection *conn, /* remove a finished connection from its link group */ void smc_conn_free(struct smc_connection *conn) { + struct smc_sock *smc = container_of(conn, struct smc_sock, conn); struct smc_link_group *lgr = conn->lgr; if (!lgr || conn->freed) @@ -1363,6 +1364,7 @@ void smc_conn_free(struct smc_connection *conn) return; conn->freed = 1; + smc->sk.sk_shutdown = SHUTDOWN_MASK; if (!smc_conn_lgr_valid(conn)) /* Connection has already unregistered from * link group.