diff options
-rw-r--r-- | net/smc/af_smc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index 5b932583e407..d9566e84f2f9 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c | |||
@@ -123,6 +123,12 @@ struct proto smc_proto6 = { | |||
123 | }; | 123 | }; |
124 | EXPORT_SYMBOL_GPL(smc_proto6); | 124 | EXPORT_SYMBOL_GPL(smc_proto6); |
125 | 125 | ||
126 | static void smc_restore_fallback_changes(struct smc_sock *smc) | ||
127 | { | ||
128 | smc->clcsock->file->private_data = smc->sk.sk_socket; | ||
129 | smc->clcsock->file = NULL; | ||
130 | } | ||
131 | |||
126 | static int __smc_release(struct smc_sock *smc) | 132 | static int __smc_release(struct smc_sock *smc) |
127 | { | 133 | { |
128 | struct sock *sk = &smc->sk; | 134 | struct sock *sk = &smc->sk; |
@@ -141,6 +147,7 @@ static int __smc_release(struct smc_sock *smc) | |||
141 | } | 147 | } |
142 | sk->sk_state = SMC_CLOSED; | 148 | sk->sk_state = SMC_CLOSED; |
143 | sk->sk_state_change(sk); | 149 | sk->sk_state_change(sk); |
150 | smc_restore_fallback_changes(smc); | ||
144 | } | 151 | } |
145 | 152 | ||
146 | sk->sk_prot->unhash(sk); | 153 | sk->sk_prot->unhash(sk); |