summaryrefslogtreecommitdiffstats
path: root/net/smc
diff options
context:
space:
mode:
Diffstat (limited to 'net/smc')
-rw-r--r--net/smc/af_smc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index c4da4a78d369..c4e56602e0c6 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -146,6 +146,9 @@ static int smc_release(struct socket *sock)
146 sock_set_flag(sk, SOCK_DEAD); 146 sock_set_flag(sk, SOCK_DEAD);
147 sk->sk_shutdown |= SHUTDOWN_MASK; 147 sk->sk_shutdown |= SHUTDOWN_MASK;
148 } 148 }
149
150 sk->sk_prot->unhash(sk);
151
149 if (smc->clcsock) { 152 if (smc->clcsock) {
150 if (smc->use_fallback && sk->sk_state == SMC_LISTEN) { 153 if (smc->use_fallback && sk->sk_state == SMC_LISTEN) {
151 /* wake up clcsock accept */ 154 /* wake up clcsock accept */
@@ -170,7 +173,6 @@ static int smc_release(struct socket *sock)
170 smc_conn_free(&smc->conn); 173 smc_conn_free(&smc->conn);
171 release_sock(sk); 174 release_sock(sk);
172 175
173 sk->sk_prot->unhash(sk);
174 sock_put(sk); /* final sock_put */ 176 sock_put(sk); /* final sock_put */
175out: 177out:
176 return rc; 178 return rc;