diff options
Diffstat (limited to 'net/smc')
-rw-r--r-- | net/smc/af_smc.c | 4 |
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 */ |
175 | out: | 177 | out: |
176 | return rc; | 178 | return rc; |